DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Windowsサービスの説明テキストを取得するには?

環境/言語:[XPsp2 + VB2005 + .NET2.0]
分類:[.NET]

現在、Windowsサービスの取得をしてリスト表示するアプリケーションを作っています。
こちらに参考にさせていただいて、サービス名などは取得が出来ました。
今はサービスの説明を取得したいと思い、レジストリからサブキー名と、
サービスネームが合致した場合に説明を変数に入れています。

この方法ですと、ローカルマシンにインストールされているサービスしか、
説明が埋まらない状況です。現在は、リモートでも説明が取得できるような
方法を考えており、ServiceProcessDescriptionAttribute.Descriptionが
説明テキストが入っているプロパティだと分かりました。

しかし、どのようにサービス名を関連付けるのかが分からずアプリケーションの
作成が止まっている状態です。どなたか知っている方がいらっしゃいましたら、
教えていただければと思います。

よろしくお願いいたします。
> 方法を考えており、ServiceProcessDescriptionAttribute.Descriptionが
> 説明テキストが入っているプロパティだと分かりました。

違います。

ServiceProcessDescriptionAttribute は、Windows サービスのプロジェクトで、その Windows サービスの説明テキストを指定するために使用するものです。

実行中の Windows サービスの情報を取得したり参照するためのものではありません。
> 現在は、リモートでも説明が取得できるような
> 方法を考えており、

WMI の Win32_Service クラスには Description プロパティが定義されているようです。

が、このプロパティがリモート接続した先の Windows サービスの説明テキストまで取ってこれるかどうかは検証していません。
ご返答ありがとうございます。

>ServiceProcessDescriptionAttribute は、Windows サービスのプロジェクトで、その Windows サービスの説明テキストを指定するために使用するものです。

なるほど、作る側のプロパティなのですね。
まずは情報いただいたWMIで試してみたいと思います。
解決ではありませんが、.NET 2.0では無理らしい
ということで解決にチェックをつけさせていただきます。

どうも、ありがとうございました。
解決済み!
> 解決ではありませんが、.NET 2.0では無理らしい
> ということで解決にチェックをつけさせていただきます。

何故ですか?

.NET は 1.1 の時代から WMI をサポートしていますよ?
豊富とは言えないかもしれませんが、検索すればサンプルコードも見つけられるはずです。
> .NET は 1.1 の時代から WMI をサポートしていますよ?
> 豊富とは言えないかもしれませんが、検索すればサンプルコードも見つけられるはずです。

再度、再度ありがとうございます。
私がWMIと.NETを別物と考えていたので、.NETの純正のという言い方が正しいかわかりませんが、
ServiceProcessでの説明テキスト取得が出来ないといった意味合いで書かせていただきました。
私の認識不足+説明不足で変な文章になってしまい申し訳なかったです。

で、肝心のWMIを使ったサンプルコードですが、見つかりました!
参照の追加で、System.Managementを追加した状態で下記のコードでリモートで
説明文が取得できました。
下記では、それをリストボックスに追加しています。

Dim arrComputers As String() = _
{"コンピュータ名"}
For Each strComputer As String In arrComputers
Dim searcher As New ManagementObjectSearcher( _
"\\" + strComputer + "\root\CIMV2", _
"SELECT * FROM Win32_Service")
For Each queryObj As ManagementObject In searcher.Get()
ListBox1.Items.Add(CStr(queryObj("DisplayName") & "," & queryObj("Description")))
Next
Next

今度こそ、キチンと解決ということでありがとうございました。
解決済み!
書き忘れました。
importsで「system」と「system.Management」と指定しています。

DOBON.NET | プログラミング道 | プログラミング掲示板