で検索する私の会社の製品のインストールプログラムで作業しています。この製品は複数回インストールすることができ、各インストールは個別のWindowsサービスを表します。ユーザーがプログラムをアップグレードまたは再インストールするとき、実行中のサービスを調べ、その製品に属するサービスを見つけて、そのサービスの実行可能ファイルとそのパスを探したいと思います。その後、その情報を使用して、ユーザーがアップグレード/置換/インストール/などを望むサービスを見つけます。下のコード例では、サービス名、説明などが表示されますが、実際のファイル名やパスは表示されません。誰かが私に行方不明を教えてもらえますか?前もって感謝します!次のようにWindowsサービスに関連付けられた実際の実行可能ファイルとパスをC#
私が持っているコードは次のとおりです。
ServiceController[] scServices;
scServices = ServiceController.GetServices();
foreach (ServiceController scTemp in scServices)
{
if (scTemp.ServiceName == "ExampleServiceName")
{
Console.WriteLine();
Console.WriteLine(" Service : {0}", scTemp.ServiceName);
Console.WriteLine(" Display name: {0}", scTemp.DisplayName);
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='" + scTemp.ServiceName + "'");
wmiService.Get();
Console.WriteLine(" Start name: {0}", wmiService["StartName"]);
Console.WriteLine(" Description: {0}", wmiService["Description"]);
}
}
WMIまたはレジストリを使用できます。 [この質問](http://stackoverflow.com/questions/2728578/how-to-get-phyiscal-path-of-windows-service-using-net)を見てください。 – Gene
驚くばかり!ありがとう、ジーン!上記の私の例とあなたが投稿したリンクを使用して、wmiService.GetPropertyValue( "PathName")を実行することができました.ToString()は、強制されているプログラムのフルパスとファイル名を返しました – Aaron