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