Перехват запускаемых и завершающих работу приложений

Всем привет! Вкратце: Есть некое приложение (а точнее служба) которое запускается при старте ПК, и перехватывает (должно перехватывать) запуск всех запускаемых приложений в системе и в зависимости от времени суток, количества времени сколько это приложение было активно в течении дня/недели/месяца, погоды на марсе, либо разрешает его выполнение, либо завершает его. Каким более менее вменяемым способом можно организовать перехват запуска и завершения процесса? Погуглив вопрос, пришел к выводу что реализация возможна 2-мя способами:

  1. Получение списка всех запущенных процессов и их дальнейший анализ
  2. Написания KMDF драйвера и дальнейшего использования PsSetCreateProcessNotifyRoutine

В связи с тем что склоняюсь к тому что 2й способ менее затратный у меня есть несколько вопросов:

  1. На сколько все таки корректно для этой цели использовать kernel mode driver
  2. Каким образом можно организовать общение между драйвером и службой скажем в виде callback, просто не нашел способа чтобы зарегистрировать обратный вызов службы в драйвере.
  3. Есть ли 3-й вариант решения данной задачи.

Ответы (0 шт):