【问题标题】:How to get full path of a windows service installation folder from c#如何从 C# 获取 Windows 服务安装文件夹的完整路径
【发布时间】:2016-06-21 08:03:04
【问题描述】:

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

我可以通过以下代码获取服务的一些属性:

            ServiceController ctl = new ServiceController("MyCustomService");

服务 .exe 驻留在此处:

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

但我需要从代码中动态地获取该路径...有可能吗?

提前谢谢...

【问题讨论】:

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

标签: c# visual-studio windows-services


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多