6
我正在爲我公司的一個產品安裝程序。該產品可以多次安裝,每次安裝代表一個獨立的Windows服務。當用戶升級或重新安裝程序時,我想查找正在運行的服務,查找屬於該產品的服務,然後查找該服務的可執行文件及其路徑。然後使用該信息來查找用戶希望升級/替換/安裝/等的哪一項服務。在我的代碼示例中,我看到服務名稱,描述等,但沒有看到實際的文件名或路徑。有人能告訴我我錯過了什麼嗎?先謝謝你!使用c查找與Windows服務相關的實際可執行文件和路徑#
我的代碼如下:
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 2012-03-22 19:24:02
太棒了!謝謝基因!使用上面的示例以及您發佈的鏈接,我可以執行以下操作:wmiService.GetPropertyValue(「PathName」)。ToString(),它返回正在執行的程序的完整路徑和文件名 – Aaron 2012-03-22 19:48:49