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.