我在c#中开发了一个Winform。我需要获得之前安装的Windows服务的完整路径。
我可以使用以下代码获取服务的某些属性:
ServiceController ctl = new ServiceController("MyCustomService");
服务.exe驻留在这里:
C:\Program Files (x86)\Manufacturer\MyCustomService
但是我需要从代码中获得这条路径......是否有可能?
提前致谢...
答案 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提供了一个很好的例子,说明了如何使用注册表来查找完整的服务路径