1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > c++获得cpu厂商_【C++】WMI获取系统硬件信息(CPU/DISK/NetWork etc)

c++获得cpu厂商_【C++】WMI获取系统硬件信息(CPU/DISK/NetWork etc)

时间:2022-06-22 01:19:42

相关推荐

c++获得cpu厂商_【C++】WMI获取系统硬件信息(CPU/DISK/NetWork etc)

原创 05月14日 01:50:22

标签:

c++ /

WMI /

CPU

官网找到一个例子,根据例子修改下可以获取很多信息

[cpp]

#define_WIN32_DCOM

#include

usingnamespacestd;

#include

#include

#pragmacomment(lib,"wbemuuid.lib")

intmain(intargc,char**argv)

{

HRESULThres;

//Step1:--------------------------------------------------

//InitializeCOM.------------------------------------------

hres=CoInitializeEx(0,COINIT_MULTITHREADED);

if(FAILED(hres))

{

cout<

<

return1;//Programhasfailed.

}

//Step2:--------------------------------------------------

//SetgeneralCOMsecuritylevels--------------------------

hres=CoInitializeSecurity(

NULL,

-1,//COMauthentication

NULL,//Authenticationservices

NULL,//Reserved

RPC_C_AUTHN_LEVEL_DEFAULT,//Defaultauthentication

RPC_C_IMP_LEVEL_IMPERSONATE,//DefaultImpersonation

NULL,//Authenticationinfo

EOAC_NONE,//Additionalcapabilities

NULL//Reserved

);

if(FAILED(hres))

{

cout<

<

CoUninitialize();

return1;//Programhasfailed.

}

//Step3:---------------------------------------------------

//ObtaintheinitiallocatortoWMI-------------------------

IWbemLocator*pLoc=NULL;

hres=CoCreateInstance(

CLSID_WbemLocator,

0,

CLSCTX_INPROC_SERVER,

IID_IWbemLocator,(LPVOID*)&pLoc);

if(FAILED(hres))

{

cout<

<

<

CoUninitialize();

return1;//Programhasfailed.

}

//Step4:-----------------------------------------------------

//ConnecttoWMIthroughtheIWbemLocator::ConnectServermethod

IWbemServices*pSvc=NULL;

//Connecttotheroot\cimv2namespacewith

//thecurrentuserandobtainpointerpSvc

//tomakeIWbemServicescalls.

hres=pLoc->ConnectServer(

_bstr_t(L"ROOT\\CIMV2"),//ObjectpathofWMInamespace

NULL,//Username.NULL=currentuser

NULL,//Userpassword.NULL=current

0,//Locale.NULLindicatescurrent

NULL,//Securityflags.

0,//Authority(forexample,Kerberos)

0,//Contextobject

&pSvc//pointertoIWbemServicesproxy

);

if(FAILED(hres))

{

cout<

<

pLoc->Release();

CoUninitialize();

return1;//Programhasfailed.

}

cout<

//Step5:--------------------------------------------------

//Setsecuritylevelsontheproxy-------------------------

hres=CoSetProxyBlanket(

pSvc,//Indicatestheproxytoset

RPC_C_AUTHN_WINNT,//RPC_C_AUTHN_xxx

RPC_C_AUTHZ_NONE,//RPC_C_AUTHZ_xxx

NULL,//Serverprincipalname

RPC_C_AUTHN_LEVEL_CALL,//RPC_C_AUTHN_LEVEL_xxx

RPC_C_IMP_LEVEL_IMPERSONATE,//RPC_C_IMP_LEVEL_xxx

NULL,//clientidentity

EOAC_NONE//proxycapabilities

);

if(FAILED(hres))

{

cout<

<

pSvc->Release();

pLoc->Release();

CoUninitialize();

return1;//Programhasfailed.

}

//Step6:--------------------------------------------------

//UsetheIWbemServicespointertomakerequestsofWMI----

//Forexample,getthenameoftheoperatingsystem

IEnumWbemClassObject*pEnumerator=NULL;

hres=pSvc->ExecQuery(

bstr_t("WQL"),

bstr_t("SELECT*FROMWin32_OperatingSystem"),

WBEM_FLAG_FORWARD_ONLY|WBEM_FLAG_RETURN_IMMEDIATELY,

NULL,

&pEnumerator);

if(FAILED(hres))

{

cout<

<

<

pSvc->Release();

pLoc->Release();

CoUninitialize();

return1;//Programhasfailed.

}

//Step7:-------------------------------------------------

//Getthedatafromthequeryinstep6-------------------

IWbemClassObject*pclsObj=NULL;

ULONGuReturn=0;

while(pEnumerator)

{

HRESULThr=pEnumerator->Next(WBEM_INFINITE,1,

&pclsObj,&uReturn);

if(0==uReturn)

{

break;

}

VARIANTvtProp;

//GetthevalueoftheNameproperty

hr=pclsObj->Get(L"Name",0,&vtProp,0,0);

wcout<

VariantClear(&vtProp);

pclsObj->Release();

}

//Cleanup

//========

pSvc->Release();

pLoc->Release();

pEnumerator->Release();

CoUninitialize();

return0;//Programsuccessfullycompleted.

}

下面列出了常用信息的类:

Win32_Processor// CPU处理器

Win32_PhysicalMemory//物理内存

Win32_Keyboard//键盘

Win32_PointingDevice//点输入设备,如鼠标

Win32_DiskDrive//硬盘驱动器

Win32_CDROMDrive//光盘驱动器

Win32_BaseBoard//主板

Win32_BIOS// BIOS芯片

Win32_ParallelPort//并口

Win32_SerialPort//串口

Win32_SoundDevice //多媒体设置

Win32_USBController// USB控制器

Win32_NetworkAdapter//网络适配器

Win32_NetworkAdapterConfiguration//网络适配器设置

Win32_Printer//打印机

Win32_PrinterConfiguration //打印机设置

Win32_PrintJob//打印机任务

Win32_TCPIPPrinterPort//打印机端口

Win32_POTSModem// MODEM

Win32_POTSModemToSerialPort// MODEM端口

Win32_DesktopMonitor//显示器

Win32_VideoController//显卡细节。

Win32_VideoSettings//显卡支持的显示模式。

Win32_TimeZone//时区

Win32_SystemDriver//驱动程序

Win32_DiskPartition//磁盘分区

Win32_LogicalDisk//逻辑磁盘

Win32_LogicalMemoryConfiguration//逻辑内存配置

Win32_PageFile//系统页文件信息

Win32_PageFileSetting//页文件设置

Win32_BootConfiguration//系统启动配置

Win32_OperatingSystem//操作系统信息

Win32_StartupCommand//系统自动启动程序

Win32_Service//系统安装的服务

Win32_Group//系统管理组

Win32_GroupUser//系统组帐号

Win32_UserAccount//用户帐号

Win32_Process//系统进程

Win32_Thread//系统线程

Win32_Share//共享

Win32_NetworkClient//已安装的网络客户端

Win32_NetworkProtocol//已安装的网络协议

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。