Delen via


Permanente gebeurtenisabonnementen voor meerdere naamruimten implementeren

Het wordt aanbevolen om alle permanente abonnementen te compileren in de \root\subscription-naamruimte. Dit voorkomt dat de permanente consument moet worden gecompileerd in elke naamruimte die wordt gebruikt, wat betekent dat er slechts één naamruimte is om te zoeken naar permanente abonnementen. Gebruik de eigenschap EventNamespace van __EventFilter om een abonnement op meerdere naamruimten te implementeren.

Wanneer u de CommandLineEventConsumergebruikt, is het belangrijk om het uitvoerbare bestand dat u start te beveiligen. Als het uitvoerbare bestand zich niet op een veilige locatie bevindt of is beveiligd met een sterke ACL (Access Control List), kan iedereen uw uitvoerbare bestand vervangen door een van hun eigen bestanden. Zie Een beveiligingsdescriptor maken voor een nieuw object in C++voor meer informatie over ACL's.

In het volgende MOF-codevoorbeeld (Managed Object Format) ziet u een abonnement op meerdere naamruimten.

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