2011-10-24 4 views
1

가능한 중복 :
C# Process MonitorC#을 프로세스 시작 및 중지 서비스

내 서버 중 하나에 윈도우 시작을 감지 서비스 및 프로세스의 닫기를 작성하려합니다. 애플리케이션을 직접 실행하면 프로세스 객체를 사용하여이 정보를 쉽게 얻을 수 있지만 다른 프로세스는 사용할 수없는 것 같습니다. 그것은 매우 쓸모있는 서비스처럼 들리지만, 진전이 없습니다.

+0

이 뜻입니까? http://stackoverflow.com/questions/7277620/getting-a-list-of-processes-in-asp-net –

+0

끔찍하게 비싸고 부정확합니다. http://stackoverflow.com/questions/1986249/c-sharp-process-monitor/1986856#1986856 –

답변

0

가장 좋은 방법은 WMI를 사용하는 것입니다. 해당 원격 서버에 대한 RPC 호출을 만들고, 올바르게 인증하고, WMI로 쿼리를 실행하여 실행중인 프로세스를 검색합니다.

+0

프로세스를 실행하는 것은 문제가되지 않지만 닫을 때를 감지합니다. 즉, 내가 멈추는 곳입니다. 프로세스 중지를 감지 할 수 없습니다. – MikeZappa

0

OpenProcess 함수를 사용하면 현재 실행중인 각 프로세스의 프로세스 핸들을 열 수 있습니다. 필요한 것은 프로세스 ID뿐입니다. 그런 다음 원하는 대기 기능에서 프로세스 핸들을 사용할 수 있습니다. 해당 프로세스가 종료되면 신호가 보내집니다.

새 프로세스가 시작될 때 감지하는 것이 더 어렵습니다. 새 프로세스에 대한 폴링이 만족스럽지 않으면 장치 드라이버를 작성하고 PsSetCreateProcessNotifyRoutine 기능을 사용해야합니다.