Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
objWMIservice.ExecNotificationQueryAsync MySink, "SELECT * FROM RegistryValueChangeEvent WHERE " & "Hive = 'HKEY_LOCAL_MACHINE'" &_" AND KeyPath = ‘" & Join(Split(strKeyName, ""), "\") & "'" & " AND ValueName = '" & strValName &"'"
WScript.Echo "Ожидаем события..."
i = 0
While (i < 20)
Wscript.Sleep(1000)
i = i + 1
objReg.SetStringValue HKEY_LOCAL_MACHINE, strKeyName, strValName, «test» & i
Wend
MySink.Cancel
objReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyName
Разберем пример, приведенный в листинге 7, подробнее. Мы используем асинхронную технику обработки внешних (extrinsic) событий WMI для класса RegistryValueChangeEvent.
В самом начале (сразу после подключения к репозиторию WMI и классу StdRegProv) мы создаем ключ, изменение которого мы будем в последующем отслеживать. Далее мы регистрируем процедуру – обработчик событий (Event Sink) под названием REG_OnObjectReady. Объявляем мы ее с использованием метода CreateObject для класса WbemScripting.SWbemSink. Далее мы вызываем метод асинхронной обработки событий WMI ExecNotificationQueryAsync. Этот метод подписывает наш сценарий (вернее его процедуру REG_OnObjectReady) на получение событий об изменении интересующего нас значения реестра. В данном примере это значение HKEY_LOCAL_MACHINESOFTWAREaRegKeyMyValue. После того как обработчик зарегистрирован, мы начинаем ожидать события изменения этого ключа в цикле while, попутно делая раз в секунду (1000 миллисекунд) изменение этого самого ключа с помощью другого метода WMI: SetStringValue. Как только пройдет 20 секунд, и мы 20 раз изменим указанный выше ключ, цикл завершается, и в самом конце сценария мы отменяем подписку на события WMI вызовом метода Cancel объекта MySink, а также удаляем созданный ранее ключ реестра.
Работа с Active Directory через WMI Directory Service provider
Еще один полезный и интересный провайдер WMI – это провайдер для работы со службой каталогов Microsoft Active Directory. Все классы этого провайдера определены в пространстве имен rootdeirctoryldap. Сразу хочу обратить внимание, что существует альтернативное средство для работы с Active Directory из сценариев и приложений – это ADSI (Active Directory Services Interfaces). Объектная библиотека ADSI более проста и удобна в использовании, чем провайдер WMI Directory Services, тем более что он является надстройкой над всё тем же ADSI.
Зачем же тогда нужен этот провайдер?! – спросите вы. Все довольно просто – поскольку WMI универсальное средство мониторинга и управления системой Windows и ее компонентами, то есть необходимость интегрировать все средства управления системой через WMI. Кроме того, поскольку некоторые программные продукты по своей архитектуре могут использовать только WMI, то задача управления Active Directory должна быть решена и через WMI в том числе.