共用方式為


將事件篩選綁定到邏輯消費者

建立邏輯事件取用者和事件篩選之後,您必須連結它們,以註冊邏輯取用者以接收篩選所指定事件的通知。

下列程序說明如何將事件過濾器與邏輯使用者系結。

若要將事件篩選與邏輯取用者系結

  1. 在 WMI 存放庫中建立 __FilterToConsumerBinding 系統類別的實例。

    __FilterToConsumerBinding 類別是關聯類別,可透過 FilterConsumer 參考屬性,將事件篩選實例和邏輯取用者實例連結在一起。 如需詳細資訊,請參閱宣告關聯類別

  2. Filter 屬性設定為篩選的實例。

  3. 使用者 屬性設定為您邏輯使用者的實例。

  4. 設定 DeliverSynchronously 屬性,以判斷您想要的傳遞類型。

    DeliverSynchronously 屬性會決定 WMI 以同步或異步方式傳遞事件通知。 將此屬性設定為 TRUE 要求同步傳遞。 只有在永久取用者可以在大約 100 毫秒內處理事件時,才使用同步傳遞。

    注意

    由於回呼至接收端可能不會在用戶端所需的相同驗證層級傳回,因此建議您使用半同步通信,而不是異步通訊。 如需詳細資訊,請參閱 呼叫 方法

     

  5. 取消註冊邏輯事件取用者時,請確定您刪除 __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}; 
};

兩個取用者,ActiveScriptEventConsumerCommandLineEventConsumer,除非其建立者是本機 Administrators 群組的成員,否則將無法運作。

當系統管理員建立訂用帳戶時,他的 SID 不會用於 CreatorSID 屬性,而是改用本機 Administrators 群組的 SID。 因此,實例可以由不同的系統管理員建立,而且訂用帳戶仍然可以運作。 如需詳細資訊,請參閱 安全地接收事件

當過濾器系結至邏輯取用者時,事件會由 Windows 事件追蹤 記錄。 如需詳細資訊,請參閱 追蹤 WMI 活動

在所有時刻接收事件