Share via


使用邏輯取用者系結事件篩選

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

下列程式描述如何系結事件篩選準則與邏輯取用者。

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

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

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

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

  3. Consumer 屬性設定為邏輯取用者的實例。

  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}; 
};

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

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

當篩選準則系結至邏輯取用者時,事件會由 Windows 事件 追蹤 (ETW) 記錄。 如需詳細資訊,請參閱 追蹤 WMI 活動

隨時接收事件