Menerapkan Langganan Peristiwa Permanen Lintas Namespace Layanan

Disarankan agar semua langganan permanen dikompilasi ke dalam namespace \root\subscription. Ini mencegah kebutuhan untuk mengkompilasi konsumen permanen ke dalam setiap namespace yang digunakan, yang berarti bahwa hanya ada satu namespace layanan untuk mencari langganan permanen. Gunakan properti EventNamespacedari __EventFilter untuk mengimplementasikan langganan lintas namespace layanan.

Saat menggunakan CommandLineEventConsumer, penting untuk mengamankan executable yang Anda luncurkan. Jika executable tidak berada di lokasi yang aman, atau diamankan dengan daftar kontrol akses (ACL) yang kuat, siapa pun dapat mengganti executable Anda dengan salah satu milik mereka sendiri. Untuk informasi selengkapnya tentang ACL, lihat Membuat Deskriptor Keamanan untuk Objek Baru di C++.

Contoh kode Managed Object Format (MOF) berikut ini memperlihatkan langganan lintas namespace layanan.

#pragma namespace("\\root\\subscription")

instance of __EventFilter as $FLT
{
  Name = "Filter";
  Query = "SELECT * FROM __InstanceModificationEvent "
          "WHERE TargetInstance ISA \"Win32_LocalTime\" "
          "AND TargetInstance.Hour = 8 "
          "AND TargetInstance.Minute = 0 "
          "AND TargetInstance.Second = 0 "
          "AND TargetInstance.DayOfWeek = 6";
  QueryLanguage = "WQL";
  EventNamespace = "root\\cimv2";
};

instance of CommandLineEventConsumer as $CONS
{
  ExecutablePath = "cmd.exe";
  ShowWindowCommand = 7;
  RunInteractively = true;
};

instance of __FilterToConsumerBinding
{
  Consumer = $CONS;
  Filter = $FLT;
};