2016-06-21 7 views
-1

Ich habe eine Winform in C# entwickelt. Ich brauche einen vollständigen Pfad meines Windows-Dienstes, den ich zuvor installiert habe.Wie bekomme ich den vollständigen Pfad eines Windows Service Installationsverzeichnisses von C#

Ich kann einige Eigenschaften des Dienstes mit dem folgenden Code erhalten:

  ServiceController ctl = new ServiceController("MyCustomService"); 

der Service .exe befindet sich hier:

C:\Program Files (x86)\Manufacturer\MyCustomService 

aber ich brauche diesen Weg dinamically von Code, zu erhalten. .. Ist es möglich?

Vielen Dank im Voraus ...

+0

Pfad zum Ausführen der Assembly 'System.Reflection.Assembly.GetExecutingAssembly(). Location' aus dem Code des Dienstes. Wenn Sie den Pfad von einer anderen Anwendung erhalten möchten, können Sie 'Registry.GetValue()' verwenden, um den Zeichenfolgenwert von 'ImagePath' aus dem Schlüssel' HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ YourServiceName' zu ​​erhalten oder einen Wrapper um 'sc qc YourServiceName zu erstellen ' – vitalygolub

Antwort

0

Der Service Controller-Klasse wird nicht den vollständigen Pfad von einem Windows-Service bieten, Sie haben entweder ein WMI oder Registry

WqlObjectQuery wqlObjectQuery = new WqlObjectQuery(string.Format("SELECT * FROM Win32_Service WHERE Name = '{0}'", serviceName)); 
    ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(wqlObjectQuery); 
    ManagementObjectCollection managementObjectCollection = managementObjectSearcher.Get(); 

    foreach (ManagementObject managementObject in managementObjectCollection) 
    { 
     return managementObject.GetPropertyValue("PathName").ToString(); 
    } 

Diese link bietet schönes Beispiel für die Nutzung von So verwenden Sie die Registrierung, um den vollständigen Pfad des Dienstes zu finden

Verwandte Themen