Sdílet prostřednictvím


Inicializace modelu COM pro aplikaci služby WMI

Prvním krokem při připojování k rozhraní WMI je nastavení volání modelu COM pro CoInitializeEx a CoInitializeSecurity.

Příklady kódu v tomto tématu vyžadují následující odkazy a příkazy #include, aby se správně zkompilovaly.

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

Následující postup popisuje, jak inicializovat com z klientské aplikace.

Inicializovat model COM z klientské aplikace

  1. Inicializujte COM s voláním CoInitializeEx.

    Volání CoInitializeEx je standardní postup pro nastavení rozhraní COM. Rozhraní WMI proto nevyžaduje splnění žádných dodatečných postupů při volání CoInitializeEx. Další informace naleznete v tématu COM.

    Následující příklad kódu popisuje, jak volat 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. Nastavte obecné úrovně zabezpečení COM voláním rozhraní CoInitializeSecurity.

    CoInitializeSecurity je standardní funkce, kterou musíte volat při nastavování rozhraní modelu COM pro proces. Pokud chcete nastavit výchozí nastavení zabezpečení pro ověřování, zosobnění nebo ověřovací službu pro celý proces, zavolejte CoInitializeSecurity. Další informace naleznete v tématu Nastavení zabezpečení procesu klientské aplikace. Pokud chcete nastavit nebo změnit zabezpečení pro konkrétní proxy server, musíte volat CoSetProxyBlanket. Použijte CoSetProxyBlanket vždy, když musíte nastavit nebo změnit zabezpečení modelu COM při spuštění uvnitř jiného procesu, kde nemůžete řídit výchozí nastavení zabezpečení pro ověřování, zosobnění nebo ověřovací službu. Další informace najdete v tématu Nastavení úrovní zabezpečení pro připojení k rozhraní WMI a Nastavení zabezpečení pro IWbemServices a další proxy servery.

    Rozhraní WMI má několik problémů se zabezpečením, o které byste měli vědět při programování klientské aplikace rozhraní WMI. Další informace naleznete v tématu Nastavení zabezpečení procesu klientské aplikace.

    Následující příklad kódu popisuje, jak volat CoInitializeSecurity a nastavit zabezpečení modelu COM v procesu.

    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.
    }
    

Po inicializaci COM je dalším krokem vytvoření připojení k oboru názvů rozhraní WMI. Další informace naleznete v tématu Vytvoření připojení k oboru názvů WMI.

vytvoření aplikace WMI pomocí jazyka C++

přístup k oborům názvů WMI