Pracuję nad programem instalacyjnym dla jednego z produktów mojej firmy. Produkt można zainstalować wiele razy, a każda instalacja reprezentuje osobną usługę Windows. Gdy użytkownicy aktualizują lub ponownie instalują program, chciałbym wyszukać uruchomione usługi, znaleźć usługi, które należą do produktu, a następnie znaleźć plik wykonywalny i jego ścieżkę do tej usługi. Następnie użyj tych informacji, aby znaleźć jedną z usług, które użytkownik chce uaktualnić/wymienić/zainstalować/etc. W poniższym przykładzie kodu widzę nazwę usługi, opis itp., Ale nie widzę rzeczywistej nazwy pliku lub ścieżki. Czy ktoś mógłby mi powiedzieć, czego mi brakuje? Z góry dziękuję!znajdowanie rzeczywistego pliku wykonywalnego i ścieżki powiązanej z usługą Windows przy użyciu C#
kod mam jest następujący:
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"]);
}
}
Można użyć usługi WMI lub rejestru. Spójrz na [to pytanie] (http://stackoverflow.com/questions/2728578/how-to-get-phyiscal-path-of-windows-service-using-net). – Gene
Awesome! Dziękuję Gene! Korzystając z powyższego przykładu i linku, który opublikowałeś, mogłem wykonać następujące czynności: wmiService.GetPropertyValue ("PathName") ToString(), który zwrócił pełną ścieżkę i nazwę pliku programu, który jest wyłączany – Aaron