Bagikan melalui


Membuat klausa WHERE untuk penyedia registri

Poin utama yang perlu dipertimbangkan saat membuat klausa WHERE yang tepat untuk penyedia Registri Sistem adalah bahwa setiap kueri peristiwa harus lengkap dan eksplisit. Kegagalan untuk selesai dan eksplisit akan mengakibatkan pesan kesalahan.

Agar selesai, setiap kueri peristiwa dalam parameter bstrQueryexecNotificationQueryAsync harus berisi klausa WHERE yang menyertakan setiap properti di kelas peristiwa yang ditentukan.

Contoh berikut menunjukkan cara mengatur bstrQuery untuk mendaftar peristiwa perubahan pohon di pohon "HKEY_LOCAL_MACHINE\Software".

SELECT * FROM RegistryTreeChangeEvent  WHERE Hive = "HKEY_LOCAL_MACHINE" AND Rootpath = "Software"

Agar eksplisit, penyedia harus dapat menyimpulkan dari kueri daftar nilai yang mungkin untuk setiap properti di kelas peristiwa.

Contoh berikut menunjukkan kueri peristiwa yang mendaftar dengan benar untuk peristiwa perubahan pohon.

SELECT * FROM RegistryTreeChangeEvent 
    WHERE (hive = "hkey_local_machine" AND rootpath = "software") 
    OR    (hive = "hkey_current_user" AND rootpath = "console")

Berikut ini adalah contoh pendaftaran yang salah.

SELECT * FROM RegistryTreeChangeEvent  WHERE hive = "hkey_local_machine" OR rootpath ="software"

Karena tidak ada cara untuk mengevaluasi nilai yang mungkin untuk setiap properti, WMI menolak dengan kesalahan WBEM_E_TOO_BROAD kueri apa pun yang tidak memiliki klausa WHERE atau jika klausul WHERE terlalu luas untuk digunakan.