名前空間間の永続的なイベント サブスクリプションの実装
永続的なサブスクリプションはすべて、\root\subscription 名前空間にコンパイルすることをお勧めします。 これにより、使用されている各名前空間に永続的コンシューマーをコンパイルする必要がなくなり、永続的なサブスクリプションを検索する名前空間は 1 つだけです。 __EventFilter の EventNamespace プロパティを使用して、名前空間間サブスクリプションを実装します。
CommandLineEventConsumerを使用する場合は、起動する実行可能ファイルをセキュリティで保護することが重要です。 実行可能ファイルが安全な場所にない場合、または強力なアクセス制御リスト (ACL) で保護されている場合は、誰でも実行可能ファイルを独自の場所に置き換えることができます。 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;
};