다음을 통해 공유


WMI 연결에서 보안 수준 설정

IWbemServices 프록시에 대한 포인터를 검색한 후 프록시를 통해 WMI에 액세스하려면 프록시의 보안을 설정해야 합니다. IWbemServices 프록시가 out-of-process 개체에 대한 액세스 권한을 부여하므로 보안을 설정해야 합니다. 일반적으로 COM 보안은 적절한 보안 속성을 설정하지 않은 경우 한 프로세스가 다른 프로세스에 액세스하도록 허용하지 않습니다. 자세한 내용은 IWbemServices 및 기타 프록시에서 보안 설정을 참조하세요. 다른 운영 체제에 연결하려면 다양한 수준의 인증 및 가장이 필요합니다. 자세한 내용은 원격 컴퓨터에서 WMI에 연결을 참조하세요.

이 항목의 코드 예제를 올바르게 컴파일하려면 다음 참조 및 #include 문이 필요합니다.

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

다음 절차에서는 WMI 연결에서 보안 수준을 설정하는 방법을 설명합니다.

WMI 연결에서 보안 수준을 설정하려면

  • CoSetProxyBlanket 호출을 사용하여 IWbemServices 프록시의 보안 수준을 설정합니다.

    다음 코드 예제에서는 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 애플리케이션 정리 및 종료를 참조하세요.