Percorso dell’eseguibile di un servizio Windows

Come posso ottenere il percorso dell’eseguibile di un servizio Windows specifico da un altro programma? Sfortunatamente la class ServiceController (System.ServiceProcess) non fornisce un metodo o una proprietà per questo!

C’è sempre la class WMI Win32_Service come descritto qui , in particolare il PathName .

Questo funziona:

 ManagementClass mc = new ManagementClass("Win32_Service"); foreach(ManagementObject mo in mc.GetInstances()) { if(mo.GetPropertyValue("Name").ToString() == "") { return mo.GetPropertyValue("PathName").ToString().Trim('"'); } } 

Puoi ottenerli da qui usando il Registro di sistema in HKLM:

  System\CurrentControlSet\Services\Service 

Cerca il valore di ImagePath.