Dot-Net

如何使用.net 獲取 Windows 服務的物理路徑?

  • June 1, 2016

我必須在 .Net Admin 應用程序中獲取 Windows 服務的絕對路徑。我正在使用 .Net 的 ServiceController,如下所示。

ServiceController serviceController = new  ServiceController(serviceName);

但是我在這裡看不到任何屬性來獲取服務的 .exe 的絕對路徑。反正有沒有以程式方式得到這個。

您可以使用 WMI 獲得此資訊,這需要對 System.Management 的程序集引用:

using System.Management;

class Program
{
   static void Main(string[] args)
   {
       Console.WriteLine(GetPathOfService("eventlog"));
       Console.ReadLine();
   }

   public static string GetPathOfService(string serviceName)
   {
       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();
       }

       return null;
   }
}

引用自:https://stackoverflow.com/questions/2728578