다음을 통해 공유


레지스트리 공급자에 대한 WHERE 절 만들기

시스템 레지스트리 공급자에 대한 올바른 WHERE 절을 만들 때 고려해야 하는 주요 사항은 각 이벤트 쿼리가 완전하고 명시적이어야 한다는 것입니다. 완전하고 명시적이지 않으면 오류 메시지가 표시됩니다.

쿼리를 완성하려면 ExecNotificationQueryAsyncbstrQuery 매개 변수에 있는 각 이벤트 쿼리가 지정된 이벤트 클래스에 각 속성이 포함되어 있는 WHERE 절을 포함해야 합니다.

다음 예제에서는 “HKEY_LOCAL_MACHINE\Software” 트리에서 트리 변경 이벤트를 등록하도록 bstrQuery를 설정하는 방법을 보여 줍니다.

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 오류와 함께 거부합니다.