如何从c中获取Windows服务安装文件夹的完整路径#
问题描述:
我在c#中开发了一个Winform。我需要获得我以前安装的Windows服务的完整路径。如何从c中获取Windows服务安装文件夹的完整路径#
我能得到服务的一些性质,用下面的代码:
ServiceController ctl = new ServiceController("MyCustomService");
服务.exe文件所在的位置:
C:\Program Files (x86)\Manufacturer\MyCustomService
,但我需要得到这条道路dinamically,从代码。 .. 可能吗?
在此先感谢...
答
服务控制器类不会提供窗口服务的完整路径,你必须使用一个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提供的很好的例子如何使用注册表查找服务的完整路径
从服务代码执行程序集“System.Reflection.Assembly.GetExecutingAssembly()。Location”的路径。 如果你想从其他应用程序获取路径,你可以使用'Registry.GetValue()'从键HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ YourServiceName'获取'ImagePath'的字符串值,或者围绕'sc qc YourServiceName ' – vitalygolub