共用方式為


安全地提供活動

您可以防止未經授權的使用者接收他們不應該存取的事件。 您的事件提供者可以提供自己的事件類別實例,就像 系統登錄提供者 提供類別,例如 RegistryKeyChangeEvent。 您的事件提供者也可以傳遞內部事件,例如 __InstanceCreationEvent。 如需詳細資訊,請參閱 撰寫事件提供者

事件提供者可以透過下列方式控制事件收件者的存取:

  • 使用實作 IWbemEventProviderSecurity::AccessCheck,是最有效的方式。

    提供者會判斷取用者是否具有接收要求事件的許可權。 如果取用者沒有足夠的許可權來註冊,WMI 會傳回拒絕存取錯誤。 當提供者可以決定誰可以接收事件時,請使用此模式。 例如,提供者可能會提供安全性相關事件,而且可能需要取用者具有已啟用 SeSecurityPrivilege 許可權的系統管理員許可權。

  • 在用於引發事件的接收端上實作 IWbemEventSink::SetSinkSecurity,允許針對所有通過的事件在接收端設置安全性描述元(SD)。

    WMI 會根據 SD 執行存取檢查。 當提供者無法決定誰可以取用其事件,但可以為特定接收端決定 SD 時,請使用此模式。 例如,如果您的事件提供者透過呼叫 IWbemEventSink::GetRestrictedSink 取得了多個接收器,並且您希望為每個接收器設定安全性描述符,請使用 IWbemEventSink::SetSinkSecurity

  • 設定事件的 SECURITY_DESCRIPTOR 屬性,使得可以為每個事件設置安全描述符 (SD)。

    當傳遞至接收端的每個事件可以有不同的安全性描述元時,請使用此方法。 若要使用此方法,請從您的提供者所定義的 __Event__ExtrinsicEvent 中衍生任何外部事件類別,以確保您的類別包含 SECURITY_DESCRIPTOR 屬性。 例如,您的事件提供者可能會通過一個接收器發佈安全事件和一般事件。 在此情況下,請針對安全事件使用 Administrators 帳戶安全性描述元,針對任何人可接收的一般事件,使用 NULL 安全性描述元。

解耦事件提供者來保護事件

分離事件提供者在註冊到WMI的方式上,與非分離事件提供者有所不同。 從分離提供者的事件呼叫 IWbemEventProviderSecurity::AccessCheck 永遠不會傳播用戶端存取令牌。 WMI 會以與非編碼事件提供者相同的方式處理訪問控制。 如需有關撰寫分離提供者的詳細資訊,請參閱 在應用程式中納入提供者

只有 控制面板WMI 控制件 中設定 FULL_WRITE 許可權的系統管理員,才能引發命名空間的事件。 如需詳細資訊,請參閱 使用 WMI 控制項設定命名空間安全性

保護 WMI 事件