Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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