HRESULT hr
//1.初始化COM
hr = CoInitializeEx(0,COINIT _多線程);//初始化COM
//2.初始化COM進程安全性
hr = CoInitializeSecurity(
NULL,//安全描述符
-1,// COM協商身份驗證服務
NULL,//身份驗證服務
NULL,//保留
RPC_C_AUTHN_LEVEL_DEFAULT,//代理的默認身份驗證級別
RPC_C_IMP_LEVEL_IMPERSONATE,//代理的默認模擬級別
NULL,//身份驗證信息
EOAC_NONE,//客戶端或服務器的附加功能
NULL);//保留
//3.獲取到WMI的初始定位器
//初始化IWbemLocator接口
IWbemLocator * pLoc = 0;
HR = cocreate instance(CLSID _ WBEM locator,0,
CLSCTX_INPROC_SERVER,IID _ iwbelocator,(LPVOID *)& amp;pLoc);
//4.通過調用IWbemLocator::ConnectServer,獲取指向本地計算機上root\cimv2命名空間的IWbemServices的指針。
IWbemServices * pSvc = 0;
//使用當前用戶連接到根\默認命名空間。
HR = pLoc-& gt;連接服務器(
_bstr_t(L"ROOT\\CIMV2 "),// WMI命名空間
NULL,//用戶名
NULL,//用戶密碼
0,//區域設置
空,//安全標誌
0,//權威
0,//上下文對象
& amppSvc // IWbemServices代理
);
cout & lt& lt“連接到WMI”& lt;& ltendl
//5.設置IWbemServices代理安全,以便WMI服務可以通過調用CoSetProxyBlanket來模擬客戶端。
//設置代理,以便模擬客戶端。
hr = CoSetProxyBlanket(pSvc,//表示要設置的代理
RPC_C_AUTHN_WINNT,// RPC_C_AUTHN_xxx
RPC_C_AUTHZ_NONE,// RPC_C_AUTHZ_xxx
NULL,//服務器主體名稱
RPC_C_AUTHN_LEVEL_CALL,// RPC_C_AUTHN_LEVEL_xxx
RPC_C_IMP_LEVEL_IMPERSONATE,// RPC_C_IMP_LEVEL_xxx
NULL,//客戶端標識
EOAC _ NONE);//代理功能
//6.使用IWbemServices指針向WMI發出請求。
IEnumWbemClassObject * pEnumerator = NULL;
HR = pSvc-& gt;ExecQuery(
bstr_t("WQL "),
bstr _ t(" SELECT * FROM Win32 _ Battery "),
WBEM _ FLAG _ FORWARD _ ONLY | WBEM _ FLAG _ RETURN _ IMMEDIATELY,
空,
& amppEnumerator);
如果(失敗(小時))
{
cout & lt& lt"進程查詢失敗。"
& lt& lt"錯誤代碼= 0x "
& lt& lt十六進制& lt& lthr & lt& ltendl
pSvc->;發布();
pLoc-& gt;發布();
coun initialize();
返回1;//程序失敗。
}
其他
{
IWbemClassObject * pclsObj
ULONG ure turn = 0;
ULONG I = 0;
while(吝嗇鬼)
{
HR = pEnumerator-& gt;接下來(WBEM_INFINITE,1,
& amppclsObj & amp;uReturn);
if(0 == uReturn)
{
printf(" End \ n ");
打破;
}
變體vtProp
BSTR唱片公司;//LPCWSTR
if(Strname[i][0] == "string ")
{
lp = (BSTR)Strname[i][1]。c _ str();
//獲取Name屬性的值
HR = pclsObj-& gt;Get(lp,0 & amp;vtProp,0,0);
printf(Strname[i][1]。c _ str());
wcout & lt& lt":" & lt& ltvt prop . bstr val & lt;& ltendl
variant clear(& amp;vt prop);
}
其他
{
printf(Strname[i][1]。c _ str());
Printf(":未知\ n ");
}
i++;
}
}
//清理
// ========
pSvc->;發布();
pLoc-& gt;發布();