Путь к исполняемому файлу службы Windows

Как я могу получить путь к исполняемому файлу конкретной службы Windows из другой программы? К сожалению, класс ServiceController (System.ServiceProcess) не предоставляет для этого метода или свойства!

Ответ 1

Всегда существует класс WMI Win32_Service, как описано здесь, в частности PathName.

Это работает:

ManagementClass mc = new ManagementClass("Win32_Service");
foreach(ManagementObject mo in mc.GetInstances())
{
    if(mo.GetPropertyValue("Name").ToString() == "<Short name of your service>")
    {
        return mo.GetPropertyValue("PathName").ToString().Trim('"');
    }
}

Ответ 2

Вы можете получить их здесь, используя реестр в HKLM:

 System\CurrentControlSet\Services\Service

Найдите значение ImagePath.