Реализация постоянных подписок на события между пространствами имен
Рекомендуется компилировать все постоянные подписки в пространство имен \root\subscription. Это предотвращает необходимость компиляции постоянного потребителя в каждое используемое пространство имен. Это означает, что существует только одно пространство имен для поиска постоянных подписок. Используйте свойство EventNamespace__EventFilter для реализации подписки между пространствами имен.
При использовании CommandLineEventConsumer важно защитить запускаемый исполняемый файл. Если исполняемый файл не находится в безопасном расположении или защищен с помощью строгого списка управления доступом (ACL), любой пользователь может заменить исполняемый файл своим собственным. Дополнительные сведения о списках управления доступом см. в разделе Создание дескриптора безопасности для нового объекта в C++.
В следующем примере кода формата управляемых объектов (MOF) показана подписка между пространствами имен.
#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;
};