共用方式為


在 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 連線上設定安全性層級

  • IWbemServices Proxy 上設定安全性層級,並呼叫 CoSetProxyBlanket

    下列程式代碼範例描述呼叫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 應用程式