Udostępnij za pośrednictwem


Tworzenie połączenia z przestrzenią nazw usługi WMI

Po skonfigurowaniu standardowych wywołań COM, należy następnie połączyć się z WMI poprzez wywołanie metody IWbemLocator::ConnectServer. Metoda ConnectServer zwraca proxy z interfejsu IWbemServices. Za pośrednictwem IWbemServicesmożna uzyskać dostęp do różnych funkcjonalności WMI.

Przykłady kodu w tym temacie wymagają następujących odwołań i instrukcji #include w celu poprawnego skompilowania.

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

Poniższa procedura opisuje sposób tworzenia połączenia z przestrzenią nazw usługi WMI.

Aby utworzyć połączenie z przestrzenią nazw usługi WMI

  • Zainicjuj interfejs IWbemLocator poprzez wywołanie CoCreateInstance.

    WMI nie wymaga wykonania żadnych dodatkowych procedur podczas wywoływania CoCreateInstance w IWbemLocator.

    W poniższym przykładzie kodu opisano sposób inicjowania IWbemLocator.

        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.
        }
    
    • Połącz się z usługą WMI za pomocą wywołania metody IWbemLocator::ConnectServer.

      Metoda ConnectServer zwraca proxy do interfejsuIWbemServices używanego do uzyskiwania dostępu do lokalnej lub zdalnej przestrzeni nazw WMI określonej w wywołaniu do ConnectServer.

      W poniższym przykładzie kodu opisano sposób wywoływania ConnectServer.

      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;
      

Po otrzymaniu wskaźnika do serwera proxy IWbemServices, należy ustawić zabezpieczenia serwera proxy, aby uzyskać dostęp do WMI. Aby uzyskać więcej informacji, zapoznaj się z Ustawianie poziomów zabezpieczeń w połączeniu usługi WMI.

tworzenie aplikacji WMI przy użyciu języka C++

Obsługa protokołów IPv6 i IPv4 w WMI