2010年09月02日

Mgmtclassgen.exe で生成した Sserviceクラスに手を加える

   このエントリーをはてなブックマークに追加 Clip to Evernote
先月に紹介したMgmtclassgen.exe で生成した Sserviceクラスは、一通りの機能が 揃っているので、とても便利なのですが、
Change と Create メソッドは、引数が多すぎるのが難点ですね。


自動生成されたメソッドなのでしかたないですね。
この Sserviceクラスは単なるC#のクラスなわけですから、 このソースに手を加えても問題ありません。
使いにくかったら、使いやすくしてしまえばいい訳で、 引数の少ない Change, Createメソッドをオーバーロードすることができます。
あたりまえですね。

例えば、Createならば、こんな感じ。


Nmae には、サービス名
PathName には、実行ファイルのパス名
StartMode には、"Manual", "Automatic" とかを指定します。

C#4.0だったら、引数の省略機能を使う別のアプローチもできますね、


ところで、自動生成する引数の変数名がPascal形式なのは困ります...
MSのツールなんだから、MSの推奨である Camel形式に合わせて欲しいですね。

  

Posted by gushwell at 23:38Comments(0)TrackBack(0)

2010年08月23日

厳密型クラス ジェネレータ (Mgmtclassgen.exe)

   このエントリーをはてなブックマークに追加 Clip to Evernote

最近になって、「厳密型クラス ジェネレータ (Mgmtclassgen.exe)」の存在を知りました。
これを使うと、WMIオブジェクトを操作するクラスを自動生成させることができます。
この存在を知らなかったので、今までは、System.Managemen 名前空間のクラスを いろいろいじって、WMIオブジェクトを操作していました。

MSDNのこちらのページに簡単な使い方が書いてあります。
 方法 : 厳密に型指定されたオブジェクトを使用する
 http://msdn.microsoft.com/ja-jp/library/ms257357.aspx

例えば、
とコマンドを打つと、c:\temp に、service.cs というC#のソースファイルが作成されます。
この中に、Win32_Service オブジェクトのラッパークラスである Serviceクラスが でできます。

この Service クラスを使うと、Windowsサービスの\情報を取得したり登録情報を変更したりができます。
WMIを直接呼び出すよりも、簡単ですね。
これは、便利です。
  
Posted by gushwell at 22:04Comments(2)TrackBack(1)

2010年08月19日

ConnectionOptions の AuthenticationLevel プロパティ

   このエントリーをはてなブックマークに追加 Clip to Evernote

リモートマシンから WMI サービスを使用し、IIS の情報を取得する C# のプログラムを書いたのだが、
アクセス拒否で、失敗してしまう。
原因が分からずしばらく悩みました。
ConnectionOptions の指定が悪かったようです。
以下のように、AuthenticationLevel.PacketPrivacy を指定する必要があるようです。

  
Posted by gushwell at 21:20Comments(0)TrackBack(0)