建立與 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 連線上設定安全性層級。
相關主題