Вот возможное решение с использованием WMI:
using System.Management;
String query = String.Format("SELECT PathName FROM Win32_Service WHERE Name = '{0}'", serviceName);
using (ManagementObjectSearcher mos = new ManagementObjectSearcher(query)) {
foreach(ManagementObject mo in mos.Get())
Console.WriteLine(mo["PathName"].ToString());
}
Обязательно оберните ManagementObjectSearcher
в блоке using
, поскольку он является ресурсом и должен быть утилизирован должным образом.
Я не уверен, требуется ли для запуска повышенные разрешения, но для этого требуется, чтобы WMI был установлен и запущен на компьютере. Чтобы проверить, работает ли WMI, откройте оснастку служб и найдите инструментарий управления Windows. Вы также можете включить его, запустив net start winmgmt
из командной строки.