共用方式為


在 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 應用程式