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
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; }
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.
Verwante onderwerpen