Erstellen einer Verbindung mit einem WMI-Namespace
Nachdem Sie die Standardaufrufe für COM festgelegt haben, müssen Sie über einen Aufruf der Methode IWbemLocator::ConnectServer eine Verbindung mit WMI herstellen. Die ConnectServer-Methode gibt einen Proxy einer IWbemServices-Schnittstelle zurück. Über IWbemServices können Sie auf die verschiedenen Funktionen von WMI zugreifen.
Für die Codebeispiele in diesem Thema müssen die folgenden Verweise und #include-Anweisungen ordnungsgemäß kompiliert werden.
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <windows.h>
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
Im folgenden Verfahren wird beschrieben, wie Sie eine Verbindung mit einem WMI-Namespace erstellen.
So erstellen Sie eine Verbindung mit einem WMI-Namespace
Initialisieren Sie die IWbemLocator-Schnittstelle über einen Aufruf von CoCreateInstance.
WMI erfordert keine zusätzlichen Prozeduren beim Aufrufen von CoCreateInstance für IWbemLocator.
Im folgenden Codebeispiel wird beschrieben, wie IWbemLocator initialisiert wird.
IWbemLocator *pLoc = 0; HRESULT hr; hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc); if (FAILED(hr)) { cout << "Failed to create IWbemLocator object. Err code = 0x" << hex << hr << endl; CoUninitialize(); return hr; // Program has failed. }
Stellen Sie eine Verbindung mit WMI über einen Aufruf der Methode IWbemLocator::ConnectServer her.
Die ConnectServer-Methode gibt einen Proxy an eine IWbemServices-Schnittstelle zurück, die für den Zugriff auf den lokalen oder Remote-WMI-Namespace verwendet wird, der in Ihrem Aufruf von ConnectServer angegeben ist.
Im folgenden Codebeispiel wird beschrieben, wie ConnectServer aufgerufen wird.
IWbemServices *pSvc = 0; // Connect to the root\default namespace with the current user. hr = pLoc->ConnectServer( BSTR(L"ROOT\\DEFAULT"), //namespace NULL, // User name NULL, // User password 0, // Locale NULL, // Security flags 0, // Authority 0, // Context object &pSvc); // IWbemServices proxy if (FAILED(hr)) { cout << "Could not connect. Error code = 0x" << hex << hr << endl; pLoc->Release(); CoUninitialize(); return hr; // Program has failed. } cout << "Connected to WMI" << endl;
Nachdem Sie einen Zeiger auf den IWbemServices-Proxy erhalten haben, müssen Sie die Sicherheit für den Proxy für den Zugriff auf WMI festlegen. Weitere Informationen finden Sie unter Festlegen der Sicherheitsstufen für eine WMI-Verbindung.
Zugehörige Themen