2016-06-21 10 views
-1

Winform을 C#으로 개발했습니다. 전에 설치 한 Windows 서비스의 전체 경로를 가져와야합니다.C에서 Windows 서비스 설치 폴더의 전체 경로를 얻는 방법 #

  ServiceController ctl = new ServiceController("MyCustomService"); 

서비스 .EXE 여기있는 :

은 내가 다음 코드로 서비스의 일부 속성을 얻을 수

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

하지만 난 코드에서, dinamically 해당 경로를 얻을 필요가있다. .. 가능하니? 사전에

덕분에 ...

+0

서비스 코드에서 어셈블리 'System.Reflection.Assembly.GetExecutingAssembly(). Location'을 실행하는 경로입니다. 다른 응용 프로그램에서 경로를 얻으려면'HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ YourServiceName' 키에서'ImagePath'의 문자열 값을 얻기 위해'Registry.GetValue()'를 사용하거나'sc qc YourServiceName ' – vitalygolub

답변

0

서비스 컨트롤러 클래스 실 거예요 Windows 서비스의 전체 경로를 제공, 당신은

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이의 좋은 예를 제공 WMI 또는 레지스트리를 사용하도록해야 레지스트리를 사용하여 전체 서비스 경로를 찾는 방법

관련 문제