C#中级-通过挂号表读取Windows 瑟维斯(Service)程序执行路径

using System.ServiceProcess; //需要添加引用

public static string GetFilePathFromService(string serviceName)
{
      try
      {
          ServiceController[] services = ServiceController.GetServices();
          var socketService = services.FirstOrDefault(x => String.Equals(x.ServiceName, "SocketService"));
          if (socketService != null)
          {
              var key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\" + serviceName);
              if (key != null)
              {
                   var serviceExePath = GetString(key.GetValue("ImagePath").ToString());
                   var folderPath = Path.GetDirectoryName(serviceExePath);
                   if (!String.IsNullOrEmpty(folderPath) && Directory.Exists(folderPath))
                   {
                        return folderPath;
                   }                    
              }
          }
       }
       catch(Exception ex)
       {
            return null;
       }
       return null;
}

二、正文

 

       假如该Windows
服务业已起步,名称叫SocketService。

 

        那么这多少个非Windows
瑟维斯(Service)应用程序怎么在代码中找到Windows服务使用的施行路径呢?

      
近日有些忙,Webgl前边三章估算要拖更了。。。尴尬。

        Step1:
你要反省本地运行的Windows服务中是否有叫Socket瑟维斯(Service)的服务;

        Step3:
读取注册表信息的ImagePath即可获取该Windows服务的履行路径。

一、前言

        Step2:
读取注册表,在地头运行的Windows服务都会出现在注册表中,我们透过劳务名称找到该注册表音讯;

C#,三、结尾

      
假诺我们的C#缓解方案中有两个程序行使,如:Web应用、控制台程序、WPF程序拔取和Windows服务应用。

相关文章