2013-10-24 1 views
0

C#에서 NetTcpActivator 및 NetPipeActivator 서비스의 상태를 가져 오려고합니다. ServiceController에서 서비스가 보이지 않지만 서비스 및 레지스트리 테이블에 표시 중

은 내가 ServiceController 모든 서비스 목록에이 코드를 사용 :

ServiceController[] services = ServiceController.GetServices(); 

    foreach (ServiceController service in services) 
    { 
     string name = service.ServiceName; 
     string status = service.Status.ToString(); 

    } 

내가 디버그 간을하지만 두 서비스를 볼 수 없습니다.

Windows 서비스를 사용하는 경우 두 가지 서비스가 표시됩니다. 레지스트리에 가서 SYSTEM \ CurrentControlSet \ services를 찾으면 NetTcpActivator 및 NetTcpPortSharing이 표시됩니다. 그러나 레지스트리에서 나는 서비스 상태를 볼 수 없다.

ServiceController 서비스가 표시되지 않는 이유는 무엇입니까? ServiceController에 표시되지 않는 경우 서비스 상태를 얻는 방법을 알고 싶습니다.

감사

답변

1

난 당신이 디버깅 목적으로 모든 서비스를 통해 반복 된 가정,하지만 당신이 필요로하는 서비스를받을 수있는 간단한 LINQ 문을 사용할 수 있습니다.

var netTcpActivatorService = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == "NetTcpActivator"); 

var netPipeActivatorService = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == "NetPipeActivator"); 
+0

예, 그것은 디버그 목적으로 만이었다

나는이 작업을 수행하고 서비스를받을 수 있었다. 그러나 서비스는 보여주지 않습니다. –

+1

고마워,이 방법은 작동합니다! 나는 왜 그것이 다른 방법으로하지 않았는지 모르겠다. :-) –

+0

@ DaniellePaquette-Harvey 대/소문자를 구분하는 문제 일 수도 있습니다. 다행 이었기 때문에 다행! – gleng

관련 문제