建立與 WMI 命名空間的連線

將標準呼叫設定為 COM 之後,您必須透過 IWbemLocator::ConnectServer 方法的呼叫連線到 WMI。 ConnectServer方法會傳回IWbemServices介面的 Proxy。 透過 IWbemServices,您可以存取 WMI 的不同功能。

本主題中的程式碼範例需要下列參考和#include語句才能正確編譯。

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

下列程式描述如何建立與 WMI 命名空間的連線。

建立與 WMI 命名空間的連線

  • 透過對CoCreateInstance的呼叫,初始化IWbemLocator介面。

    WMI 不需要您在IWbemLocator上呼叫CoCreateInstance時執行任何其他程式。

    下列程式碼範例說明如何初始化 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.
        }
    
    • 透過呼叫 IWbemLocator::ConnectServer 方法連線到 WMI。

      ConnectServer方法會將 Proxy 傳回至IWbemServices介面,該介面會用來存取您呼叫ConnectServer中指定的本機或遠端 WMI 命名空間。

      下列程式碼範例說明如何呼叫 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;
      

收到 IWbemServices Proxy 的指標之後,您必須在 Proxy 上設定安全性以存取 WMI。 如需詳細資訊,請參閱 在 WMI 連線上設定安全性層級

使用 C++ 建立 WMI 應用程式

WMI 中的 IPv6 和 IPv4 支援