Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Основные моменты, которые следует учитывать при создании соответствующего предложения WHERE для поставщика системного реестра, заключаются в том, что каждый запрос событий должен быть завершённым и явным. Несоответствие полноте и ясности приведет к появлению сообщения об ошибке.
Чтобы быть полным, в каждом запросе события в параметре bstrQuery параметраExecNotificationQueryAsync должно присутствовать предложение WHERE, включающее каждое из свойств указанного класса событий.
В следующем примере показано, как задать bstrQuery для регистрации событий изменения дерева в дереве "HKEY_LOCAL_MACHINE\Software".
SELECT * FROM RegistryTreeChangeEvent WHERE Hive = "HKEY_LOCAL_MACHINE" AND Rootpath = "Software"
Чтобы быть явным, поставщик должен иметь возможность выводить из запроса список возможных значений для каждого свойства в классе событий.
В следующем примере показан запрос события, который правильно регистрируется для событий изменения дерева.
SELECT * FROM RegistryTreeChangeEvent
WHERE (hive = "hkey_local_machine" AND rootpath = "software")
OR (hive = "hkey_current_user" AND rootpath = "console")
Ниже приведен пример неправильной регистрации.
SELECT * FROM RegistryTreeChangeEvent WHERE hive = "hkey_local_machine" OR rootpath ="software"
Так как нет способа оценить возможные значения для каждого свойства, WMI отклоняет ошибку WBEM_E_TOO_BROAD любой запрос, который либо не имеет предложения WHERE, либо если предложение WHERE слишком широко для любого использования.