C语言读取计算机CPU的序列号、硬盘(网卡、机器名)
发布网友
发布时间:2022-04-20 05:45
我来回答
共5个回答
热心网友
时间:2023-07-12 03:17
说实话,我在图书馆里看过一本叫《C语言编程实战105例》的一本书,是半年前看的,那里面有相关的代码,但是你要CPU号这种高级的东东就不好办了。我从昨天开始想你的问题。也没有什么进展,就到网上就找了找,发现网上有关于这方面的贴子,但那位高手用的是linux的环境做的,在win下不能运行,
http://topic.csdn.net/t/20061110/09/5147214.html这个是那个贴的链接。可能对你有点用吧。
对了要求CPU的序列号的话是要一个api及相关的库,要是没用这个是不可能做出正来的。我从别的地方搞了一个cpu信息函数,对你有用的:
DWORD MyCPUSpeed()
{
BSTR bstrMyCpuName=NULL;
BSTR bstrMyPropName = NULL;
VARIANT pVal;
char szText[256];
int nCpuNum=0;
DWORD dwCpuSpeed=0;
IWbemClassObject *pCpuInst=NULL;
IWbemQualifierSet* pQualSet = NULL;
bstrMyPropName = SysAllocString(L"CurrentClockSpeed");
if(bstrMyPropName == NULL)
{
return dwCpuSpeed;
}
while(1)
{
memset(szText,0,sizeof(szText));
sprintf(szText,"Win32_Processor.DeviceID=\"CPU%d\"", nCpuNum);
bstrMyCpuName = _bstr_t(szText);
if(bstrMyCpuName == NULL)
{
break;
}
if(pSvc->GetObject(bstrMyCpuName, 0L, NULL, &pCpuInst, NULL) != S_OK)
{
break;
}
if(pCpuInst->Get(bstrMyPropName, 0L, &pVal, NULL, NULL) == S_OK)
{
nCpuNum++;
dwCpuSpeed += pVal.lVal;
}
VariantClear(&pVal);
SysFreeString(bstrMyCpuName);
bstrMyCpuName = NULL;
}
if(bstrMyPropName != NULL)
{
SysFreeString(bstrMyPropName);
bstrMyPropName = NULL;
}
if(bstrMyCpuName != NULL)
{
SysFreeString(bstrMyCpuName);
bstrMyCpuName = NULL;
}
memset(szText,0,sizeof(szText));
sprintf(szText, "CPU个数: %d, CPU频率: %ld Mhz", nCpuNum, dwCpuSpeed);
cout<<"------------------------"<<szText<<"-------------------------"<<endl;
return dwCpuSpeed;
}
还有一点,我在网上看到和你要求差不多的文章,但是它的代码好像少了一点什么,也做一下参考,我们一起研究一下也好。
http://e.codepub.com/2010/0523/22939_3.php
这是那个的链接,主要是没有头文件和宏什么的。
热心网友
时间:2023-07-12 03:18
从P III以后CPU不支持序列号了,可以读取CPU名字之类的。
一般用WMI读就行,硬盘的话,也可以直接读取SMART。
写过一个,留下邮箱,给你发过去。
热心网友
时间:2023-07-12 03:18
用现成的CPU-Z吧 硬件信息都能显示
热心网友
时间:2023-07-12 03:19
要是不想折腾就找现成的软件吧
检测系统的相关软件
热心网友
时间:2023-07-12 03:19
具体搜索下相关的api
如:api 获得cpu序列号