故あって、サービスプログラム内で、自身のサービス名が欲しい状況が生まれたのですが、調べてもそんな事例が見つからず、かなり途方に暮れました。なのでメモ。
結果としては、以下のコードでサービス名を取得するようにしました。
Dim pid = System.Diagnostics.Process.GetCurrentProcess.Id Dim wmi As New System.Management.ManagementObjectSearcher() wmi.Query.QueryString = "select name from Win32_Service where ProcessId = " & CStr(pid) Dim n = wmi.Get() Dim serviceName As String = n(0)("Name")
まずプロセスIDをとって、それからWMIを使ってサービス情報を引っ張ることでなんとか実現。
しかし自分のサービス名ってあまり取得するようなものではないのかな…それとも検索の仕方がまずいだけか…
オールトの雲
[WMI] WMIのクエリー
先のエントリーの WMI ですが、.NET系では、System.Management を参照設定することで、WQL という SQL ライクな問い合わせ言語で照会が出来る様でした。
Link | 2011年2月7日 22:04