안녕하세요, Process.GetProcesses()를 사용하지 않고 ManagementEventWatcher를 사용하지 않고 새 프로세스가 시작될 때 이벤트를 발생시키는 방법이 있습니까? ManagementEventWatcher의 문제점은 사용자가 높은 우선 순위를 가져야한다는 것입니다. 감사합니다 !!!C# 새 프로세스가 시작될 때 이벤트 발생
답변
현재 사용중인 외부 이벤트 Win32_ProcessStartTrace
과 달리 __InstanceCreationEvent
및 __InstanceDeletionEvent
WMI 내장 이벤트에는 관리자 권한이 필요하지 않습니다.
SELECT TargetInstance
FROM __InstanceCreationEvent WITHIN 1
WHERE TargetInstance ISA 'Win32_Process'
AND TargetInstance.Name LIKE '<your process name.exe>'
추가 정보 : 여기
는 프로세스 시작을 추적하는 데 사용할 수있는 샘플 쿼리의 이러한 본질적 이벤트, 폴링에 의한 WMI 궁극적으로 모방 이벤트 동작이기 때문에 Process Information and Notifications using WMI를하고 확인합니다 새로운 이벤트에 대해서만 주기적으로 (여기서는 1 초마다). WITHIN
시간을 초 단위로 줄이면 CPU 사용량이 줄어들어 응답 속도가 빨라집니다.
매우 짧은 폴링 간격 (예 : 0.1 초)은 프로세스에없는 CPU의 최대 30 %를 소비 할 수 있지만 실제 폴링을 수행하는 WmiPrvSE.exe는 사용할 수 없습니다. 왜 당신의 프로세스가 갑자기 많은 CPU를 사용하지만 하나의 시스템 프로세스를 사용하는지 궁금하게 생각한다면. –
이상한 점은 응용 프로그램이 창을 창에 만들 필요가 없다는 것입니다. 생성 프로세스는 작업중인 윈도우 스테이션에 속하지 않을 수 있습니다. 어쨌든 그 프로세스의 창을 찾아야하며 모든 프로세스의 새 창과 닫힌 창을 찾아야합니다.
그래서 열거 창은 훨씬 더 깔끔하고 쉽게 선택됩니다.
데스크톱 핸들 (GetDesktopWindow
에서 검색)에서 EnumChildWindows
기능을 사용해보십시오. 최상위 창 응용 프로그램을 찾으십시오. 획득 된 핸들에 GetWindowThreadProcessId
및 EnumThreadWindows
을 사용하여 창의 하위 창을 탐지하십시오.
우선 순위가 낮은 스레드가 작업을 수행합니다.
Windows에서 감사 프로세스 추적을 구성하여 응용 프로그램이 마지막으로 실행 된시기를 알아낼 수 있어야합니다. 다음 링크는 시작할 수 있습니다
과정 추적은 다음 C#을 사용 액세스 할 수 있습니다 Windows 이벤트 로그에 항목을 작성합니다.
참고 : 당신은 아마 USER32.DLL에서 EnumDesktopWindows을 사용할 수 있습니다 .NET Process Monitor
이것은 의미가 있으며 폴링 할 필요없이 이벤트 로그 업데이트를 구독 할 수 있습니다. http://msdn.microsoft.com/en-us/library/bb671202(v=vs.90).aspx. 나는 당신에게 현상금을 수여 할 것입니다. – Satyajit
원래 질문은 다른 질문자가 했으므로 답변을 수락 한 것으로 표시 할 수는 없습니다. – Satyajit
http://stackoverflow.com/questions/1986249/c-sharp-process-monitor#answer-1986294를 축 어적으로 복사하지 않으시겠습니까? 그 현상금을 얻는 것이 정상입니까? 현상금은 [0xA3] (http://stackoverflow.com/users/40347/0xa3)에 속하면 안됩니까 ?? –
, 당신은 당신이 et Wi ndow Te xt는을 사용하여 윈도우의 제목을 확인할 수 있습니다 모든 창 핸들을 얻고, 윈도우의 종류 GetClassSignature의를 사용하는 것입니다.
그런 식으로 힌트 또는 보물을 숨길 수 있습니다. (왜냐하면 모든 창 (및 컨트롤) 핸들을 얻을 것이다). 이 클래스는 그 기사에 Managed Global Hook for Window Creation and Destruction
에, 누군가가 이벤트를 연결하는 쉬운 좋은 클래스를 만들었습니다 도움이 될 것입니다 경우
당신은 권한이 상승하지 않고 그 코드를 실행할 수 있습니다 참조하십시오.
윈도우 (컨트롤) 핸들을 얻으면 힌트를 위해 텍스트를 추가하거나 이미지를 그릴 수 있습니다.
- 1. 현재 프로세스가 시작될 때 DateTime을 얻는 방법?
- 2. 일부 프로세스가 시작될 때 알림을받을 수 있습니까?
- 3. C#에서 이벤트 발생
- 4. 왜 프로세스가 시작될 때 추가 작업자 스레드가 생성됩니까?
- 5. 프로세스가 종료되고 다시 시작될 때 onCreateDialog가 호출되지 않도록 방지
- 6. WCF 서비스가 C#에서 Process.Start를 호출 할 때 프로세스가 시작될 때 MessageBox가 표시되지 않습니다.
- 7. 유휴 이벤트 발생
- 8. 타이머 C#에서는 타이머가 시작될 때?
- 9. python subprocess : 프로세스가 프롬프트 할 때 오류 발생
- 10. 텍스트 입력시 이벤트 발생
- 11. C#에서 이벤트 발생 및 출력?
- 12. 네이티브 C 함수 내부에서 이벤트 발생?
- 13. 스크립트 작업의 이벤트 발생
- 14. 새 활동이 시작될 때 이전 활동이 어두워지지 않음
- 15. 비동기 적으로 이벤트 발생
- 16. Ning에서 이벤트 발생
- 17. 파일 읽기시 이벤트 발생?
- 18. WPF MouseLeftButtonDownEvent 이벤트 발생
- 19. 정적 클래스의 이벤트 발생
- 20. 이벤트 발생 횟수 제한
- 21. 매초마다 이벤트 발생
- 22. 체인 클래스의 이벤트 발생
- 23. Java에서 이벤트 발생 처리
- 24. C/C++ 코드에서 malloc/free가 아닌 새/삭제와 충돌 발생
- 25. fsockeopen - 제한 시간이 시작될 때 알리기
- 26. 고해상도 인터벌/타이머에서 이벤트 발생
- 27. TextBox가 비어있는 경우 발생 이벤트
- 28. WPF - 반복적으로 LayoutUpdated 이벤트 발생
- 29. SystemUIServer가 다시 시작될 때 경고를받습니다.
- 30. Tomcat이 시작될 때 객체 인스턴스화
보안 모델을 우회하는 대신 실제로 어떤 문제를 해결하려고하는지 알려주십시오. 생각하지 못한 전반적인 접근 방식이 더 좋을 수도 있습니다. –
놀이터에서 창을 사용하는 게임 (Treasure Hunt)을 만들고 있습니다. 새 메모장이나 캘린더를 열면 프로세스에 대한 힌트가 전송됩니다. 다음 프로세스가 시작될 때 이벤트를 발생시켜야합니다. 보물에 대한 힌트를 보내십시오 .... 나는 당신이 그것을 얻기를 희망합니다 .... – user604627
'ManagementEventWatcher'을 시도 했습니까? 나는 매우 제한된 사용자 계정에서 시도하지 않았 음을 인정하지만 높은 권한이 필요하다고 말하는 문서에는 아무것도 표시되지 않습니다. –