다음을 통해 공유


네임스페이스 간 영구 이벤트 구독 구현

모든 영구 이벤트 구독을 \root\subscription 네임스페이스로 컴파일하는 것이 좋습니다. 이렇게 하면 영구 소비자를 사용 중인 각 네임스페이스로 컴파일할 필요가 없으므로 영구 구독을 찾을 네임스페이스가 하나만 있습니다. __EventFilterEventNamespace 속성을 사용하여 네임스페이스 간 구독을 구현합니다.

CommandLineEventConsumer를 사용하는 경우 시작하려는 실행 파일을 보호하는 것이 중요합니다. 실행 파일이 안전한 위치에 있지 않거나 강력한 ACL(액세스 제어 목록)로 보호되지 않는 경우 누구나 실행 파일을 원하는 실행 파일로 바꿀 수 있습니다. ACL에 대한 자세한 내용은 C++에서 새 개체에 대한 보안 설명자 만들기를 참조하세요.

다음 MOF(Managed Object Format) 코드 예제에서는 네임스페이스 간 구독을 보여 줍니다.

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