Какой процесс API нужно подключить для отслеживания сервисов? - PullRequest
1 голос
/ 20 сентября 2011

Мне нужно отслеживать журнал, когда служба или приложение в Windows запускается, останавливается, и успешно ли завершается или с кодом ошибки.

Я понимаю, что многие сервисы не регистрируют свое собственное время запуска и остановки или, если они выходят правильно, поэтому, похоже, для этого нужно было бы вставить хук в API, который будет ловить, когда сервисы /приложения запрашивают пространство процесса и освобождают его.

Мой вопрос: какую функцию мне нужно подключить для достижения этой цели, и возможно ли это вообще?Мне нужно, чтобы он работал на Windows XP и 7, оба 64-разрядных.

Ответы [ 3 ]

3 голосов
/ 21 сентября 2011

Я думаю, что вам лучше всего использовать драйвер устройства.См. PsSetCreateProcessNotifyRoutine .

3 голосов
/ 20 сентября 2011

Windows Vista имеет NotifyServiceStatusChange(), но только для отдельных служб.В более ранних версиях это невозможно, кроме как опросить изменения или просмотреть журнал событий.

0 голосов
/ 21 сентября 2011

Если вы ищете решение для пользовательского пространства, EnumProcesses () вернет текущий список. Но это не будет сигнализировать вам об изменениях, вам придется постоянно опрашивать их и реагировать на различия.

Если вы наблюдаете за конкретным приложением или набором приложений, рассмотрите возможность назначения их объектам заданий, которые позволяют вам устанавливать ограничения для процессов и управлять ими извне. Я думаю, что вы даже можете связать Explorer с объектом задания, тогда все задачи, запущенные пользователем, будут автоматически связаны с вашим объектом задания. Возможно, на что-то посмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...