Dela via


Implementera permanenta händelseprenumerationer för tvärnamespace

Vi rekommenderar att alla permanenta prenumerationer kompileras till namnområdet \root\subscription. Detta förhindrar behovet av att kompilera den permanenta konsumenten till varje namnområde som används, vilket innebär att det bara finns ett namnområde att söka efter permanenta prenumerationer. Använd egenskapen EventNamespace för __EventFilter för att genomföra en prenumeration av gränsöverskridande namnrymd.

När du använder CommandLineEventConsumerär det viktigt att skydda den körbara fil som du startar. Om den körbara filen inte finns på en säker plats eller skyddas med en stark åtkomstkontrollista (ACL) kan vem som helst ersätta din körbara fil med en egen. Mer information om ACL:er finns i Skapa en säkerhetsbeskrivning för ett nytt objekt i C++.

Följande MOF-kodexempel (Managed Object Format) visar en prenumeration över tvärnamnrymd.

#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;
};