初始化 WMI 應用程式的 COM
連線到 WMI 的第一個步驟是設定 CoInitializeEx 和 CoInitializeSecurity的 COM 呼叫。
本主題中的程式碼範例需要下列參考和#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 命名空間的連線。
相關主題