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 애플리케이션 정리 및 종료를 참조하세요.