如何从c中获取Windows服务安装文件夹的完整路径#

如何从c中获取Windows服务安装文件夹的完整路径#

问题描述:

我在c#中开发了一个Winform。我需要获得我以前安装的Windows服务的完整路径。如何从c中获取Windows服务安装文件夹的完整路径#

我能得到服务的一些性质,用下面的代码:

  ServiceController ctl = new ServiceController("MyCustomService"); 

服务.exe文件所在的位置:

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

,但我需要得到这条道路dinamically,从代码。 .. 可能吗?

在此先感谢...

+0

从服务代码执行程序集“System.Reflection.Assembly.GetExecutingAssembly()。Location”的路径。 如果你想从其他应用程序获取路径,你可以使用'Registry.GetValue()'从键HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ YourServiceName'获取'ImagePath'的字符串值,或者围绕'sc qc YourServiceName ' – vitalygolub

服务控制器类不会提供窗口服务的完整路径,你必须使用一个WMI或注册表

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(); 
    } 

link提供的很好的例子如何使用注册表查找服务的完整路径