Freigeben über


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.

Erstellen einer WMI-Anwendung mithilfe von C++

IPv6- und IPv4-Unterstützung in WMI