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

时间:2016-06-21 08:03:05

标签: c# visual-studio windows-services

我在c#中开发了一个Winform。我需要获得之前安装的Windows服务的完整路径。

我可以使用以下代码获取服务的某些属性:

            ServiceController ctl = new ServiceController("MyCustomService");

服务.exe驻留在这里:

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

但是我需要从代码中获得这条路径......是否有可能?

提前致谢...

1 个答案:

答案 0 :(得分:0)

服务控制器类不提供Windows服务的完整路径,您必须使用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提供了一个很好的例子,说明了如何使用注册表来查找完整的服务路径