設定用戶端應用程式進程安全性

呼叫 WMI 介面的用戶端應用程式可以控制其進程的安全性層級。 所有 WMI 應用程式都可以透過 COM 存取 WMI,而且您可以呼叫 COM 函式 CoInitializeSecurity 來設定處理常式的安全性。 對 WMI 進行非同步呼叫的應用程式,以及註冊為事件取用者的應用程式,會在呼叫 WMI 上設定安全性層級。

如果您未明確呼叫 CoInitializeSecurity,COM 會以登錄中的值隱含呼叫它。 不過,登錄值可能會有較低的模擬和驗證設定,但未提供 WMI 所需的安全性。 如需詳細資訊,請參閱 使用 C++ 設定預設進程安全性層級

不建議對 WMI 進行非同步存取。 非同步回呼可讓未驗證的使用者將資料提供給接收。 這對您的腳本和應用程式造成安全性風險。 若要消除風險,請使用半同步或同步通訊,或在用戶端應用程式中執行適當的存取檢查。 如需詳細資訊,請參閱 呼叫方法

呼叫任何 WMI Proxy (IWbemServicesIEnumWbemClassObjectIWbemCallResultIWbemRefresher) 使用跨進程指標。 如需預設值和建議的詳細資訊,請參閱 在 IWbemServices 和其他 Proxy 上設定安全性

下列程式描述您必須執行的步驟,以在應用程式程式上設定 WMI 的安全性。

在應用程式程式上設定 WMI 的安全性

  1. 判斷用戶端應用程式執行所在 Windows 作業系統所需的安全性層級。
  2. 呼叫 COM CoInitializeSecurity 函式,以設定用戶端應用程式執行所在進程的預設安全性。 這會宣告其他應用程式需要多少安全性,才能存取應用程式執行所在的進程。
  3. 如果您需要變更個別 Proxy 上的安全性,例如在另一個 IWbemServices呼叫上,請呼叫 CoSetProxyBlanket
  4. 如果您需要控制需要更多許可權的遠端硬體或系統物件,請使用 AdjustTokenPrivileges 函式來啟用必要的許可權。 請注意,您無法啟用進程尚未指派給它的許可權。 如需詳細資訊,請參閱 檢查私人物件的存取權。

如需設定預設進程安全性層級的詳細資訊,請參閱 使用 C++ 設定預設進程安全性層級 和使用 VBScript 設定預設進程安全性層級