將事件篩選綁定到邏輯消費者
建立邏輯事件取用者和事件篩選之後,您必須連結它們,以註冊邏輯取用者以接收篩選所指定事件的通知。
下列程序說明如何將事件過濾器與邏輯使用者系結。
若要將事件篩選與邏輯取用者系結
在 WMI 存放庫中建立 __FilterToConsumerBinding 系統類別的實例。
__FilterToConsumerBinding 類別是關聯類別,可透過 Filter 和 Consumer 參考屬性,將事件篩選實例和邏輯取用者實例連結在一起。 如需詳細資訊,請參閱宣告關聯類別。
將 Filter 屬性設定為篩選的實例。
將 使用者 屬性設定為您邏輯使用者的實例。
設定 DeliverSynchronously 屬性,以判斷您想要的傳遞類型。
DeliverSynchronously 屬性會決定 WMI 以同步或異步方式傳遞事件通知。 將此屬性設定為 TRUE 要求同步傳遞。 只有在永久取用者可以在大約 100 毫秒內處理事件時,才使用同步傳遞。
注意
由於回呼至接收端可能不會在用戶端所需的相同驗證層級傳回,因此建議您使用半同步通信,而不是異步通訊。 如需詳細資訊,請參閱 呼叫 方法。
取消註冊邏輯事件取用者時,請確定您刪除 __FilterToConsumerBinding 實例。
每個 __FilterToConsumerBinding 實例都代表特定事件通知的註冊。 當您刪除系結時,WMI 會停用註冊。 視實作而定,您可能需要刪除邏輯取用者和事件篩選實例來停用註冊。
下列程式代碼範例示範一個 __FilterToConsumerBinding 實例,將 ActiveScriptEventConsumer 類別的實例與特定事件篩選產生關聯(事件取用者實例是在建立邏輯取用者 主題 中建立,而事件篩選是在建立事件篩選 主題 中建立的)。
instance of __FilterToConsumerBinding
{
Filter = $FILTER;
Consumer = $CONSUMER;
DeliverSynchronously=FALSE;
// this is the Administrators SID in array of bytes format
CreatorSID = {1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0};
};
兩個取用者,ActiveScriptEventConsumer 和 CommandLineEventConsumer,除非其建立者是本機 Administrators 群組的成員,否則將無法運作。
: 當系統管理員建立訂用帳戶時,他的 SID 不會用於 CreatorSID 屬性,而是改用本機 Administrators 群組的 SID。 因此,實例可以由不同的系統管理員建立,而且訂用帳戶仍然可以運作。 如需詳細資訊,請參閱 安全地接收事件。
當過濾器系結至邏輯取用者時,事件會由 Windows 事件追蹤 記錄。 如需詳細資訊,請參閱 追蹤 WMI 活動。
相關主題