Как обнаружить создание / завершение процесса win32 в c ++

Я знаю, что для получения уведомлений о создании или завершении процесса Win32 мы могли бы реализовать драйвер режима ядра NT с помощью API PsSetCreateProcessNotifyRoutine () , который предлагает возможность регистрации общесистемной функции обратного вызова, которая вызывается ОС каждый раз, когда новый процесс запускается, завершается или завершается.

Возможно ли это без создания драйвера режима ядра NT, только с использованием функций Win32 API с использованием C ++? Конечно, не использовать базовое решение бесконечного цикла, запрашивающего список активных процессов.

Есть ли какая-нибудь библиотека или Win32 API, которые предоставляют такую ​​же функциональность (общесистемный обратный вызов, асинхронные события)?

33
задан MikeTheLiar 7 December 2017 в 22:45
поделиться

3 ответа

Единственное, о чем я мог подумать, это WMI, не уверен, что он обеспечивает обратный вызов для создания процесса, но, возможно, на это стоит обратить внимание.

11
ответ дан 27 November 2019 в 18:23
поделиться

Вы можете отслеживать все процессы создания окон, используя SetWindowsHookEx с CBTProc , однако для чего-то большего требуется либо WMI, либо драйвер Windows. или немного " Black Magic "

6
ответ дан 27 November 2019 в 18:23
поделиться

Перехват API должен быть правильным способом выполнить что-то в этом роде. Вы можете подключить createProcess (A / W / asUserA / W .... и т. Д.) И NtTerminateProcess

-1
ответ дан 27 November 2019 в 18:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: