Утилита WMI Event Viewer — это постоянный потребитель, позволяющий следить за возникновением событий, фильтры для которых связаны с потребителями событий класса EventFilterConsumer. При возникновении такого события происходит автоматический запуск WMI Event Viewer (если утилита уже не была предварительно запущена) и в ее окне выводится строка с информацией о событии (важность, дата и время возникновения, класс, источник события и краткое описание события).
Утилита WMI Event Viewer находится в папке WMI Tools, исполняемый файл wbemeventviewer.exe
На первый взгляд полезность данной утилиты может показаться нулевой, но это не так… Дело в том, что возможна ситуация, когда при наступлении определенного события нужно просто получить сообщение, в котором будет храниться информация о событии и времени возникновения. Конечно, можно написать сценарий, который будет запускать log файл с отчетом о событии, но это не всегда удобно. И тут на помощь приходит утилита WMI Event Viewer.
Давайте изучим внешний вид программы. Вверху находятся три кнопки в виде пиктограмм:
- Register for Events – позволяет запустить утилиту Event Registration для регистрации в репозитории CIM постоянных потребителей событий, фильтров и событий таймера.
- View Properties – позволяет просматривать свойства выбранного события
- Clear All – очищает список с возникшими событиями
Ниже под кнопками находится таблица, в которой будут отображаться возникшие события, таблица содержит пять столбиков:
- Sev – тип возникшего события в виде значка. Внешний вид значка задается в свойстве Severity экземпляра класса EventViewerConsumer с помощью числовых параметров: 0 – Ошибка, 1 – Внимание, значение больше 1 – Информация.
- Time Received – тут отображается время и дата, когда потребитель получил событие
- Event Class – отображается класс события (например, __InstanceCreationEvent – создание экземпляра, __InstanceDeletionEvent – удаление экземпляра или __InstanceModificationEvent)
- Server — Имя системы, в которой возникло событие
- Description – собственно, описание возникшего события. Само описание задается в свойстве Description экземпляра класса EventViewerConsumer.
Пример регистрации события Windows Management Instrumentation
Как мы уже знаем, для формирования подписки на событие, нужно сначала создать фильтр события, потребитель события (в данном случае потребителем будет выступать экземпляр класса EventViewerConsumer) и сформировать связь между потребителем и фильтром, (смотрите статью «Классы WMI, пространство имен и CIM«).
Для начала откроем утилиту WMI Event Registration (это можно сделать сразу из окна WMI Ewent Viewer) и создадим в ней фильтр событий. В левой панели выберите пункт Filter из выпадающего списка, который находится вверху, выберите класс __EventFilter и создайте для него экземпляр. Для создания экземпляра щелкнете правой кнопкой мыши и выберите пункт New instance, или же нажмите соответствующую кнопку в виде пиктограммы.
В появившемся диалоговом окне заполните следующие поля:
Name – Filter_Process
WQL – прописываем запрос
SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA "Win32_Process" |
QueryLanguage – пишем WQL
Хорошо, теперь у нас есть фильтр, который будет реагировать на запуск любого процесса.
Теперь нужно создать постоянный потребитель событий для утилиты Event Viewer. Для этого в левой панели утилиты WMI Event Registration инструментария Windows Management Instrumentation выбираем пункт Consumers из выпадающего списка, раскрываем список __EventConsumer, далее выбираем класс EventViewerConsumer и создаем для него экземпляр. Порядок действий такой же как и выше. Теперь нам надо заполнить в появившемся диалоговом окне следующие поля:
- Name – имя потребителя. Пишем Event_Viewer
- Severity – тут прописываем числовой значение, пускай будет 2 – тип события Информация
- Description – пишем описание события, например “Был запущен процесс”
Хорошо, теперь нам осталось связать созданный потребитель событий и фильтр, выберите в левой панели, созданный ранее, потребитель событий (Event_Viewer), а в правой созданный ранее фильтр событий Filter_Process. Для того что бы сформировать связь, нужно или нажать на кнопку в виде пиктограммы Register, или выбрать одноименный пункт при щелчке правой кнопкой мыши на нужном фильтре.
Хорошо, теперь при запуске любого процесса будет запускаться окно утилиты Event Viewer пакета WMi Tools (если оно перед этим не было запущено) и в таблицу будет добавляться информация о событии.