MMCでHello World
ようやくHello Worldまで出来たっぽいので書いてみます.
ところでMMCってなんなのか?については
http://www.atmarkit.co.jp/fwin2k/operation/mmccons/mmccons_01.html
↑を見ればよいわけですが,僕自身はMMCをよく使っています。
使い方を簡単に説明すると,
- 「ファイル名を指定して実行...」でmmc.exeと打ち込んでMMCを起動します
- メニューの「ファイル」−「スナップインの追加と削除...」でスナップインを追加します.たとえば「イベントビューア」とか「サービス」とか,日頃よく使うものを選択します
- メニューの「ファイル」−「名前を付けて保存...」でMMCの設定情報を保存します.自分はよく,Toolkitという名前でデスクトップに保存しておきます(要はランチャーみたいなもの)
そんなわけで,これから作るMMCスナップインはMMCでホストされるように作る必要がある,というところがポイントですね.
Windows SDKのインストール
MMCの最新版は3.0です.検索すると以下のサイトにまとまった情報がのっているようです.
http://msdn2.microsoft.com/en-us/library/ms692740.aspx
ただここを読むだけだと,なにをインストールしたらよいかよくわかりません.で,さらに検索すると,どうもこれをインストールすれば良さそうだということがわかりました.
http://www.microsoft.com/downloads/details.aspx?FamilyId=C2B1E300-F358-4523-B479-F53D234CDCCF&displaylang=en
Microsoft.ManagementConsoleの参照設定を設定する
Microsoft.ManagementConsoleというのがMMC 3.0で中核となるコンポーネントのようで,Windows SDKをインストールするとGACに登録されます.MMCスナップインを作るには,プロジェクトの参照設定にMicrosoft.ManagementConsoleを加える必要があります.
クラスライブラリのプロジェクトを作成し,参照設定をVisual Studioで行おうと思ったのですが,これに最も苦労しました.通常参照設定で「.NET」タブを選択すると,その中に必要となるアセンブリが含まれているものなんですが,どうも今回それが見当たりません.
いろいろ試行錯誤して,よい方法かどうかわからないのだけど,とりあえずGACに放り込まれたアセンブリを外に出して,それを参照設定するようにしました.具体的には,コマンドプロンプトでC:\Windows\assembly\GAC_MSIL\Microsoft.ManagementConsole\以下のDLLが格納されたディレクトリに移動し,Copyコマンドで適当な場所にコピーしました.
Hello World
あとは,
http://msdn2.microsoft.com/en-us/library/ms692759.aspx
にしたがって実装していきます.詳細はいま勉強中です(^^;;
実装はこんな感じ
using Microsoft.ManagementConsole; using System.ComponentModel; using System; using System.Security.Permissions; [assembly: PermissionSetAttribute(SecurityAction.RequestMinimum, Unrestricted = true)] namespace Microsoft.ManagementConsole.Samples { [RunInstaller(true)] public class InstallUtilSupport : SnapInInstaller { } [SnapInSettings("{CFAA3895-4B02-4431-A168-A6416013C3DD}", DisplayName = "- Simple SnapIn Sample", Description = "Simple Hello World SnapIn")] public class SimpleSnapIn : SnapIn { public SimpleSnapIn() { this.RootNode = new ScopeNode(); this.RootNode.DisplayName = "Hello World"; } } }
ビルドするとSimpleSnapInSample.dllが出来上がっているので,InstallUtil.exeに食わせます.コマンドプロンプトで
InstallUtil.exe SimpleSnapInSample.dll
とすると,MMCスナップインがシステム(というかレジストリ?)に登録されます.あとはご自身のToolkitにでも入れてみてくださいね.