다음을 통해 공유


WMI 애플리케이션에 대한 COM 초기화

WMI에 연결하는 첫 번째 단계는 CoInitializeEx및 coInitializeSecurityCOM 호출을 설정하는 것입니다.

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

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

다음 절차에서는 클라이언트 애플리케이션에서 COM을 초기화하는 방법을 설명합니다.

클라이언트 애플리케이션에서 COM을 초기화하려면

  1. CoInitializeEx호출하여 COM을 초기화합니다.

    CoInitializeEx 호출하는 것은 COM 인터페이스를 설정하기 위한 표준 절차입니다. 따라서 WMI는 CoInitializeEx호출할 때 추가 프로시저를 관찰할 필요가 없습니다. 자세한 내용은 COM참조하세요.

    다음 코드 예제에서는 CoInitializeEx호출하는 방법을 설명합니다.

    HRESULT hr;
    hr = CoInitializeEx(0, COINIT_MULTITHREADED); 
    if (FAILED(hr)) 
    { cout << "Failed to initialize COM library. Error code = 0x"
           << hex << hr << endl; 
      return hr;
    }
    
  2. CoInitializeSecurity 인터페이스를 호출하여 일반 COM 보안 수준을 설정합니다.

    CoInitializeSecurity 프로세스에 대한 COM 인터페이스를 설정할 때 호출해야 하는 표준 함수입니다. 전체 프로세스에 대한 인증, 가장 또는 인증 서비스에 대한 기본 보안 설정을 하려는 경우 CoInitializeSecurity 호출합니다. 자세한 내용은 클라이언트 애플리케이션 프로세스 보안 설정을 참조하세요. 특정 프록시에 대한 보안을 설정하거나 변경하려면 CoSetProxyBlanket호출해야 합니다. 인증, 가장 또는 인증 서비스에 대한 기본 보안 설정을 제어할 수 없는 다른 프로세스 내에서 실행할 때 COM 보안을 설정하거나 변경해야 할 때마다 CoSetProxyBlanket 사용합니다. 자세한 내용은 WMI 연결 보안 수준 설정 및 IWbemServices 및 기타 프록시보안 설정을 참조하세요.

    WMI에는 WMI 클라이언트 애플리케이션을 프로그래밍할 때 알아야 할 몇 가지 보안 문제가 있습니다. 자세한 내용은 클라이언트 애플리케이션 프로세스 보안 설정을 참조하세요.

    다음 코드 예제에서는 CoInitializeSecurity 호출하여 프로세스에서 COM 보안을 설정하는 방법을 설명합니다.

    hr =  CoInitializeSecurity(
        NULL,                        // Security descriptor    
        -1,                          // COM negotiates authentication service
        NULL,                        // Authentication services
        NULL,                        // Reserved
        RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication level for proxies
        RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation level for proxies
        NULL,                        // Authentication info
        EOAC_NONE,                   // Additional capabilities of the client or server
        NULL);                       // Reserved
    
    if (FAILED(hr))
    {
       cout << "Failed to initialize security. Error code = 0x" 
            << hex << hr << endl;
       CoUninitialize();
       return hr;                  // Program has failed.
    }
    

COM을 초기화한 후 다음 단계는 WMI 네임스페이스에 대한 연결을 만드는 것입니다. 자세한 내용은 WMI 네임스페이스대한 연결 만들기를 참조하세요.

C++ 사용하여 WMI 애플리케이션 만들기

WMI 네임스페이스에 대한 액세스