Windows 서비스로 구현 된 '워치 독 (watchdog)'과 통신하는 C# (2.0 임베디드 XP에서 실행되는 응용 프로그램)이 있습니다. 장치가 부팅되면 일반적으로이 서비스를 시작하는 데 약간의 시간이 걸립니다. 내 코드에서 서비스가 실행 중인지 확인하고 싶습니다. 이것을 어떻게 할 수 있습니까?Windows 서비스가 실행 중인지 확인하는 방법
150
A
답변
290
는이 같은 일이 일 것 같아요
프로젝트 참조 (그것은 .NET 탭에서의)에 System.ServiceProcess를 추가합니다.
빠른 방법 :
return new ServiceController(SERVICE_NAME).Status == ServiceControllerStatus.Running;
안전한 방법 :
try
{
using(ServiceController sc = new ServiceController(SERVICE_NAME))
{
return sc.Status == ServiceControllerStatus.Running;
}
}
catch(ArgumentException) { return false; }
catch(Win32Exception) { return false; }
용장 방법 :
using System.ServiceProcess;
//
ServiceController sc;
try
{
sc = new ServiceController(SERVICE_NAME);
}
catch(ArgumentException)
{
return "Invalid service name."; // Note that just because a name is valid does not mean the service exists.
}
using(sc)
{
ServiceControllerStatus status;
try
{
sc.Refresh(); // calling sc.Refresh() is unnecessary on the first use of `Status` but if you keep the ServiceController in-memory then be sure to call this if you're using it periodically.
status = sc.Status;
}
catch(Win32Exception ex)
{
// A Win32Exception will be raised if the service-name does not exist or the running process has insufficient permissions to query service status.
// See Win32 QueryServiceStatus()'s documentation.
return "Error: " + ex.Message;
}
switch(status)
{
case ServiceControllerStatus.Running:
return "Running";
case ServiceControllerStatus.Stopped:
return "Stopped";
case ServiceControllerStatus.Paused:
return "Paused";
case ServiceControllerStatus.StopPending:
return "Stopping";
case ServiceControllerStatus.StartPending:
return "Starting";
default:
return "Status Changing";
}
}
편집 : 원하는 상태를 취하는 방법 sc.WaitforStatus()
도 있습니다 타임 아웃은 사용하지 않았지만 사용자의 요구에 맞을 수 있습니다.
편집 : 상태를 얻으면 상태를 다시 얻기 위해 sc.Refresh()
으로 먼저 전화해야합니다.
참조 : .NET의 ServiceController 개체.
18
.NET의 ServiceController 개체를 살펴보십시오.
9
여기에서 사용 가능한 모든 서비스와 해당 상태를 로컬 컴퓨터에서 가져옵니다.
ServiceController[] services = ServiceController.GetServices();
foreach(ServiceController service in services)
{
Console.WriteLine(service.ServiceName+"=="+ service.Status);
}
루프를 service.name 속성과 비교하면 서비스 상태를 알 수 있습니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx http://msdn.microsoft.com/en-us/library/microsoft.windows.design.servicemanager(v=vs.90).aspx
관련 문제
- 1. 서비스가 실행 중인지 확인하십시오.
- 2. 프로그래밍 방식으로 터미널 서버 서비스가 실행 중인지 확인하는 방법
- 3. .NET 프로그램이 실행 중인지 확인하는 방법
- 4. WiX에서 서비스가 실행 중인지 확인하십시오.
- 5. 언 바운드 서비스가 실행 중인지 확인하는 방법은 무엇입니까?
- 6. 특정 WCF 서비스가 실행 중인지 확인하는 방법은 무엇입니까?
- 7. 안드로이드 미디어 플레이어가 실행 중인지 확인하는 방법
- 8. vbscript를 사용하여 Outlook이 실행 중인지 확인하는 방법
- 9. osgi 컨테이너에서 실행 중인지 확인하는 방법
- 10. cgi 스크립트가 실행 중인지 확인하는 방법?
- 11. 로컬 호스트에서 실행 중인지 확인하는 방법
- 12. 모바일 장치에서 프로세스가 실행 중인지 확인하는 방법
- 13. CCAction이 실행 중인지 확인하는 방법 - cocos2d
- 14. 셀렌 서버가 백그라운드에서 실행 중인지 확인하는 방법
- 15. C++ : 외부 프로그램이 실행 중인지 확인하는 방법?
- 16. IIS가 실행 중인지 확인하는 스크립트
- 17. Windows 서버 2008에서 프로세스가 아직 실행 중인지 확인하는 방법은 무엇입니까?
- 18. 화면 보호기가 실행 중인지 확인하는 방법은 무엇입니까?
- 19. Windows 머신이 IPV4 또는 IPV6를 실행 중인지 확인하는 방법은 무엇입니까?
- 20. 안드로이드 인 텐트 서비스가 아직 실행 중인지 또는 실행이 중지되었는지를 확인하는 방법
- 21. 스크립트가 tty에서 실행 중인지 확인하는 방법은 무엇입니까?
- 22. 스크립트가 iframe에서 실행 중인지 확인하는 방법은 무엇입니까?
- 23. 스크린 세이버가 실행 중인지 확인하는 방법은 무엇입니까?
- 24. 웹 서버에서 실행 중인지 확인하는 방법은 무엇입니까?
- 25. DLL에서 서비스가 실행 중입니다.
- 26. 파일을 읽는 중인지 확인하는 방법
- 27. TSE 세션에서 내 서비스가 실행 중인지 검색하는 방법은 무엇입니까?
- 28. 특정 명령 줄이 cmd propmt에서 실행 중인지 확인하는 방법
- 29. exe가 서버의 터미널 세션에서 실행 중인지 확인하는 방법
- 30. 지연된 작업에서 어떤 레일 환경이 실행 중인지 확인하는 방법
ServiceController.GetServices()는 설치된 모든 서비스를 ServiceController 객체로 포함하는 배열을 검색합니다. 이것은 많은 도움이 될 수 있습니다. – Larry
전화를 걸었 으면, 나는 그걸 사용했는지 모르겠다. 비록 당신이 그것을 결코 사용하지 않는다면, 나는 다른 것들이 – Carl
sc.WaitforStatus()가 내가 필요로하는 것이면 디버깅하는데 유용 할 것이라고 생각한다. Thx – edosoft