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