次の方法で共有


WMI 接続でのセキュリティ レベルの設定

IWbemServices プロキシへのポインターを取得した後、プロキシ経由で WMI にアクセスするようにプロキシのセキュリティを設定する必要があります。 IWbemServices プロキシがアウトプロセス オブジェクトへのアクセスを許可するため、セキュリティを設定する必要があります。 一般に、適切なセキュリティ プロパティを設定しないと、COM セキュリティでは 1 つのプロセスが別のプロセスにアクセスできません。 詳細については、「IWbemServices およびその他のプロキシでのセキュリティの設定」を参照してください。 異なるオペレーティング システムへの接続には、さまざまなレベルの認証と偽装が必要です。 詳細については、「リモート コンピューター上の WMI への接続」を参照してください。

このトピックのコード例では、正しくコンパイルするには、次の参照と #include ステートメントが必要です。

#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")

次の手順では、WMI 接続のセキュリティ レベルを設定する方法について説明します。

WMI 接続 のセキュリティ レベルを設定するには

  • IWbemServices プロキシのセキュリティレベルを、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 アプリケーションのクリーンアップとシャットダウン」を参照してください。