共用方式為


建立登錄提供者的 WHERE 子句

為 System Registry 提供者建立適當的 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 會拒絕錯誤,WBEM_E_TOO_BROAD任何沒有 WHERE 子句的查詢,或 WHERE 子句太廣泛而無法使用。