實作跨命名空間永久事件訂閱
建議將所有永久訂用帳戶編譯成 \root\subscription 命名空間。 這可避免將永久取用者編譯至所使用的每個命名空間,這表示只有一個命名空間可尋找永久訂閱。 使用__EventFilter的EventNamespace屬性來實作跨命名空間訂用帳戶。
使用 CommandLineEventConsumer時,請務必保護您啟動的可執行檔。 如果可執行檔不在安全的位置,或使用強式存取控制清單 (ACL) 保護,任何人都可以以自己的其中一個取代可執行檔。 如需 ACL 的詳細資訊,請參閱 在 C++ 中建立新物件的安全性描述項。
下列 Managed 物件格式 (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;
};