初始化 COM 用於 WMI 應用程式
連線到 WMI 的第一個步驟是設定 COM 呼叫 CoInitializeEx 和 CoInitializeSecurity。
本主題中的程式代碼範例需要下列參考和 #include 語句才能正確編譯。
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
下列程式描述如何從用戶端應用程式初始化 COM。
從用戶端應用程式初始化 COM
透過呼叫 CoInitializeEx初始化 COM。
呼叫 CoInitializeEx 是設定 COM 介面的標準程式。 因此,WMI 不需要您在呼叫 CoInitializeEx時遵循任何其他程序。 如需詳細資訊,請參閱 COM。
下列程式代碼範例說明如何呼叫 CoInitializeEx。
HRESULT hr; hr = CoInitializeEx(0, COINIT_MULTITHREADED); if (FAILED(hr)) { cout << "Failed to initialize COM library. Error code = 0x" << hex << hr << endl; return hr; }
使用呼叫 CoInitializeSecurity 介面來設定一般 COM 安全性層級。
CoInitializeSecurity 是設定進程 COM 介面時必須呼叫的標準函式。 如果您想要為整個進程設定驗證、模擬或驗證服務的預設安全性設定,請呼叫 CoInitializeSecurity。 如需詳細資訊,請參閱 設定用戶端應用程式進程安全性。 如果您要設定或變更特定 Proxy 的安全性,您必須呼叫 CoSetProxyBlanket。 每當您必須在執行於另一個進程內且無法控制用於驗證、模擬或驗證服務的預設安全性設定的情況下設定或變更 COM 安全性,請使用 CoSetProxyBlanket。 如需詳細資訊,請參閱 在 WMI 連線 上設定安全性層級,在 IWbemServices 和其他 Proxy 上設定安全性。
WMI 有數個安全性問題,您應該在設計 WMI 用戶端應用程式時注意。 如需詳細資訊,請參閱 設定用戶端應用程式進程安全性。
下列程式代碼範例說明如何呼叫 CoInitializeSecurity,以在程式上設定 COM 安全性。
hr = CoInitializeSecurity( NULL, // Security descriptor -1, // COM negotiates authentication service NULL, // Authentication services NULL, // Reserved RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication level for proxies RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation level for proxies NULL, // Authentication info EOAC_NONE, // Additional capabilities of the client or server NULL); // Reserved if (FAILED(hr)) { cout << "Failed to initialize security. Error code = 0x" << hex << hr << endl; CoUninitialize(); return hr; // Program has failed. }
初始化 COM 之後,下一個步驟是建立 WMI 命名空間的連線。 如需詳細資訊,請參閱 建立 WMI 命名空間的連線。
相關主題
-
使用 C++ 建立 WMI 應用程式