Delen via


COM initialiseren voor een WMI-toepassing

De eerste stap bij het maken van verbinding met WMI is het instellen van de COM-aanroepen naar CoInitializeEx en CoInitializeSecurity.

De codevoorbeelden in dit onderwerp vereisen de volgende verwijzingen en #include instructies om correct te compileren.

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

In de volgende procedure wordt beschreven hoe u COM initialiseert vanuit een clienttoepassing.

COM initialiseren vanuit een clienttoepassing

  1. Initialiseer COM met een aanroep naar CoInitializeEx.

    Het aanroepen van CoInitializeEx is een standaardprocedure voor het instellen van een COM-interface. WMI vereist daarom geen aanvullende procedures bij het aanroepen van CoInitializeEx. Zie COM-voor meer informatie.

    In het volgende codevoorbeeld wordt beschreven hoe u CoInitializeExaanroept.

    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. Stel de algemene COM-beveiligingsniveaus in met een aanroep naar de CoInitializeSecurity interface.

    CoInitializeSecurity is een standaardfunctie die u moet aanroepen bij het instellen van een COM-interface voor een proces. Roep CoInitializeSecurity aan als u de standaardbeveiligingsinstellingen voor verificatie, imitatie of verificatieservice voor een heel proces wilt instellen. Zie Client Application Process Security-instellen voor meer informatie. Als u de beveiliging voor een specifieke proxy wilt instellen of wijzigen, moet u CoSetProxyBlanketaanroepen. Gebruik CoSetProxyBlanket wanneer u COM-beveiliging moet instellen of wijzigen wanneer u in een ander proces de standaardbeveiligingsinstellingen voor verificatie, imitatie of verificatieservice niet kunt beheren. Zie voor meer informatie Het instellen van de beveiligingsniveaus op een WMI-verbinding en het instellen van de beveiliging op IWbemServices en andere proxy's.

    WMI heeft verschillende beveiligingsproblemen waarmee u rekening moet houden bij het programmeren van een WMI-clienttoepassing. Zie Client Application Process Security-instellen voor meer informatie.

    In het volgende codevoorbeeld wordt beschreven hoe u CoInitializeSecurity aanroept om COM-beveiliging voor het proces in te stellen.

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

Nadat u COM hebt geïnitialiseerd, is de volgende stap het maken van een verbinding met een WMI-naamruimte. Zie Een verbinding maken met een WMI-naamruimtevoor meer informatie.

een WMI-toepassing maken met behulp van C++

toegang tot WMI-naamruimten