.net >=3.5 как отловить возникновение нового процесса в системе

Рейтинг: 4Ответов: 1Опубликовано: 09.04.2015

Собственно, как реализовать наблюдение за возникновением процессов? Вариант с перечислением процессов по таймеру не подходит, поскольку часть быстро отработавших процессов он не покажет

Ответы

▲ 3Принят

Простого хука на событие создания процесса не существует. Если процессы создаются и пропадают слишком быстро, то перечисляйте ещё чаще.

Обратите внимание, что ни стандартный Task Manager, ни продвинутый Process Explorer, написанный Руссиновичем, который знает все потроха Windows, не умеют отлавливать быстро завершившиеся процессы, если это не позволяет разрешение таймера. Думаю, если бы такая возможность существовала в нормальном виде, то ей бы воспользовались.

Если вы готовы на подвиги (и готовы распрощаться с .NET), то у вас два пути:

  • Написать драйвер, прицепиться к событию создания процесса PsSetCreateProcessNotifyRoutine, прокидывать сообщения в своё приложение.

  • Перехватывать вызовы CreateProcess и подобные.

Пример с драйвером можете найти в статье Detecting Windows NT/2K process execution.