Compartir a través de


Implementación de suscripciones de eventos permanentes entre espacios de nombres

Se recomienda que todas las suscripciones permanentes se compilen en el espacio de nombres \root\subscription. Esto evita la necesidad de compilar el consumidor permanente en cada espacio de nombres que se usa, lo que significa que solo hay un espacio de nombres para buscar suscripciones permanentes. Use la propiedad EventNamespace de __EventFilter para implementar una suscripción entre espacios de nombres.

Al usar CommandLineEventConsumer, es importante proteger el ejecutable que se está iniciando. Si el ejecutable no está en una ubicación segura o no está protegido con una lista de control de acceso segura (ACL), cualquier persona puede reemplazar el ejecutable por otro. Para obtener más información sobre las ACL, vea Creación de un descriptor de seguridad para un nuevo objeto en C++.

En el siguiente ejemplo de código de Managed Object Format (MOF) se muestra una suscripción entre espacios de nombres.

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