在 WMI 連線上設定安全性層級
擷取 IWbemServices Proxy 的指標之後,您必須在 Proxy 上設定安全性,才能透過 Proxy 存取 WMI。 您必須設定安全性,因為 IWbemServices Proxy 會授與跨進程物件的存取權。 一般而言,如果您未設定適當的安全性屬性,COM 安全性不允許一個進程存取另一個進程。 如需詳細資訊,請參閱 在 IWbemServices 和其他 Proxy 上設定安全性。 與不同作業系統的連線需要不同層級的驗證和模擬。 如需詳細資訊,請參閱 連線到遠端電腦上的 WMI。
本主題中的程式碼範例需要下列參考和#include語句才能正確編譯。
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
下列程式描述如何在 WMI 連線上設定安全性層級。
在 WMI 連線上設定安全性層級
使用對 CoSetProxyBlanket的呼叫,在IWbemServices Proxy 上設定安全性層級。
下列程式碼範例說明呼叫 CoSetProxyBlanket的常見方式。
HRESULT hres; IWbemServices *pSvc = 0; IWbemLocator *pLoc = 0; // Set the proxy so that impersonation of the client occurs. hres = CoSetProxyBlanket(pSvc, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE ); if (FAILED(hres)) { cout << "Could not set proxy blanket. Error code = 0x" << hex << hres << endl; pSvc->Release(); pLoc->Release(); CoUninitialize(); return hres; // Program has failed. }
設定 IWbemServices 指標的安全性層級之後,您可以存取 WMI 的各種功能。 使用 WMI 之後,您必須關閉應用程式。 如需詳細資訊,請參閱 清除和關閉 WMI 應用程式。