ManagementEventWatcher Process monitoring


참조 URL
  1. ManagementEventWatcher class
  2. ManagementObjectSearcher class
  3. ManagementScope class
  4. SelectQuery class
  5. ObjectQueryObjectQuery<T>


 이 포스트에 있는 내용이 언제나 확실한 정답은 아닙니다. 진실이라고 생각해 왔던 전제가 시간의 지남에 따라 들어나지 않았던 다른 이면 때문에 좋은 방향으로 이끌어 낼 수 있는 역할로 변환 되는게 역사적으로도 많은 증명 있었습니다. 그렇지만 저는 현재 상황에서 최선의 답을 찾고자 노력하였으며 이 글을 읽는 다른 분들에게 다음 길을 갈 수 있도록 도와주는 디딤돌이 되고자 노력하고자 포스팅을 통해 공유하고자 하는 것입니다. 그리고 프로그래머라는 타이틀을 달고 살아야 한다면 "왜"라는 의문을 항상 가지고 다니면서 자신의 위치에 안주하지 않고 항상 노력하는 모습으로 살아 가고자 합니다. 언제든 지적이나 오류가 있으면 피드백 부탁 드리겠습니다.

ing™       



2013/05/03 - [기타] - [WMI] ManagementObjectSearcher Process monitoring - 프로세스 모니터링


 이 포스트에서는 이미 실행되어 있는 프로세스에 대한 정보에 대해서 처리하는 내용이었다면 이번 포스트는 이벤트 방식으로 새로 실행되거나 종료될 때 처리할 수 있는 방안이다. 아래 '코드1'은 이벤트를 선언하는 부분이다.

// 모니터링 하고자 하는 프로세스 명 string monitoringProcessName = "notepad.exe"; // 이벤트 객체 선언 ManagementEventWatcher startWatcherProcess; //// Nodepad process가 시작할 때 이벤트 처리 startWatcherProcess = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace WHERE ProcessName = '" + monitoringProcessName + "'"));   // WHERE ProcessName = 'microsoft.exchange.store.worker.exe' startWatcherProcess.EventArrived += startWatcher_EventArrived; startWatcherProcess.Start();

[코드1] 이벤트 선언 및 Query 구문 적용


 위 '코드1'은 노트패드의 프로세스가 시작이 되면 이벤트를 발생하도록 구성 되었다.


static void startWatcher_EventArrived(object senderEventArrivedEventArgs e) {     Console.WriteLine("Process started: {0}, {1}"e.NewEvent.Properties["ProcessName"].Valuee.NewEvent.Properties["ProcessID"].Value); }

[코드2] 시작 이벤트 처리 핸들러


 위와 같이 이벤트가 발생하면 핸들러에서 수행을 하여 처리할 수 있을 것이다. '코드1'의 Query 구문과 같이 시작 이벤트를 받을 수 있다면 종료 이벤트에 대해서도 받을 수 있도록 수정할 수 있다. "Win32_ProcessStartTrace"와 같이 Start 대신에 "Win32_ProcessStopTrace"와 같이 수정해 주면 종료 이벤트에 대해서도 처리할 수 있다.


소스 코드 자체에 주석과 직관적인 코딩으로 충분히 파악이 가능할 것으로 예상하므로 별도의 설명을 생략하도록 하겠습니다. 포스트의 내용이 장황한 설명 보다는 주석과 소스코드 자체 만으로도 이해할 수 있도록 하기 위해 노력하였습니다. 실 개발에서도 적용할 수 있도록 간단하면서도 현실적인 예제 프로그램을 통해 각 소스를 만들고 이해 시키고자 하였으며 실무에 필요한 개발요구 사항들을 해결 하는데 도움이 되고자 노력하였습니다. 그리고 소스와 같이 있는 주석을 이용해 nDoc이나 별도의 자동 Document 제작 유틸로 API 문서를 만드는 데에도 도움이 되었으면 한다. 
※ DOC에 대한 프로그램 정보 Util link

ing™       


+ Recent posts