Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_drsp_09.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
207.87 Кб
Скачать
  1. Робота з подіями

6.1 Архітектура роботи з подіями в wmi

Усередині служби WMI реалізована служба роботи з подіями - WMI Event Service. Ця служба підтримує фільтрацію подій і забезпечення реакції на них.

Скрипт, застосування або просто адміністратор (за допомогою утиліти CIM Event Registration) можуть зареєструвати підписку на події, виступивши в ролі будівника підписки - Subscriber Builder. Події представляються у вигляді системного класу _Event, на появу яких реагує підписка.

Підписка (subscription) - визначення події, що представляє інтерес для будівника події. Фактично підписка - це вимога для служби WMI виконати певні дії, якщо станеться подія, що підпадає під умову підписки. Підписка створюється за допомогою специальногоWQL -запроса (SELECT). Настійно рекомендується визначити в цьому запиті максимально строгі умови - щоб уникнути обробки непотрібних вам подій.

Ще один компонент архітектури роботи з подіями - одержувач події, Event Consumer. Цей той блок коду в скрипті (чи застосуванні), який отримує повідомлення про настання події і реагує на нього. Одержувачі можуть бути тимчасовими і постійними.

Тимчасові одержувачі - це одержувачі, яким передаватимуться сповіщення про події тільки тоді, коли цей скрипт/застосування запущений. Тимчасові одержувачі зазвичай реєструють свої події за допомогою виклику методу ExecNotificationQuery.

Інформація про постійних одержувачів зберігається в репозитарии CIM. При настанні події службаWMI перевіряє, чи запущено необхідне застосування/скрипт, яке має бути одержувачем. Якщо воно запущене, то воно оповіщається, а якщо немає - те спочатку служба WMI проводить запуск цього застосування. ВWMI SDK поставляється такий постійний одержувач - WMI Event Viewer Tool. Наприклад, щоб зареєструвати постійного одержувача подій WMI (наприклад, для появи нових повідомлень в журналі застосувань), треба виконати наступні дії:

  • записати інформацію про застосування Event Viewer в репозитарий CIM. Для цього необхідно виконати в командному рядку команду

mofcomp c:\winnt\system32\wbem\eviewer.mof

((файл eviewer.mof встановлюється разом з WMI SDK)

  • зареєструвати нового Event Consumer для служби WMI. Для цього необхідно відкрити WMI EventRegistration, підключитися до пропонованого за умовчанням простору імен root\cimv2 і в спадаючому списку ліворуч вибрати Consumers. Далі розкрити контейнер _EventConsumer -> EventViewerConsumer, клацнути правою кнопкою миші по EventViewerConsumer і в контекстному меню вибрати New Instance. Для створюваного екземпляра досить заповнити тільки поле Name. Після натиснення OK створений одержувач з'явиться в дереві Event Registration.

  • потім створити фільтр для події, що цікавить нас. Для цього в спадаючому списку треба вибрати Filters, клацнути правою кнопкою миші по рядку _EventFilter і так само в контекстному меню вибрати NewInstance. Для створюваного об'єкту фільтру треба заповнити наступні поля:

  • Name (наприклад, TestFilter)

  • Query (наприклад, для перехоплення подій журналу застосувань - Select * from __InstanceCreationEvent Where TargetInstance ISA 'Win32_NTLogEvent') QueryLanguage - WQL

  • останнє, що залишилося зробити - зареєструвати для цього фільтру приймач події. Для цього в правій частині екрану клацніть правою кнопкою миші по створеному вами об'єкту одержувача і в контекстному меню виберіть Register. У стовпці Reg повинен з'явитися зелений прапорець: одержувач і фільтр налагоджені для прийоми подій.

Для перевірки створеної вами конфігурації досить виконати короткий скрипт, який згенерує повідомлень в журнал подій застосувань, наприклад:

Dim oShell

Set oShell = CreateObject("Wscript.Shell")

oShell.LogEvent 0, "TestMessage"

Якщо усе зроблено правильно, то з'явиться вікно WMI Event Viewer з інформацією про подію, що сталася.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]