为注册表提供程序创建 WHERE 子句
为系统注册表提供程序创建适当的 WHERE 子句时要考虑的要点是每个事件查询都必须完整且显式。 如果不完整和不显式,会收到错误消息。
若要完整,ExecNotificationQueryAsync 的 bstrQuery 参数中的每个事件查询都必须包含一个 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 会拒绝所有不含 WHERE 子句或 WHERE 子句过于宽泛而无用的查询,并显示错误 WBEM_E_TOO_BROAD。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈