获取CPU 序列号问题

bao20080513shengbin 2010-05-04 01:14:24
	
unsigned long s1,s2;
unsigned char vendor_id[]="------------";//CPU提供商ID
CString str1,str2,str3;
// 以下为获得CPU ID的汇编语言指令
_asm // 得到CPU提供商信息
{
xor eax,eax // 将eax清0
cpuid // 获取CPUID的指令
mov dword ptr vendor_id,ebx
mov dword ptr vendor_id[+4],edx
mov dword ptr vendor_id[+8],ecx
}
str1.Format("%s",vendor_id);

_asm // 得到CPU ID的高32位
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
str2.Format("%08X-%08X\n",s1, s2);

_asm // 得到CPU ID的低64位
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
str3.Format("%08X-%08X\n",s1,s2);

str2=str2+str3;

str1+="\r\n";
str1+=str2;

MessageBox(str1);

我在获取CPU 序列号时,使用了如下从网上找的程序,但只能输出 str2。 str3输出全为零,GenuineIntel
BFEBFBFF-0001067A
00000000-00000000
不能准确获取
我用网上下的一个工具却能全部得到此序列号。
BFEBFBFF-0001067A 01020800 0400E33BD
不知什么原因,得不到完整序列号,或者看看有没有其它办法等到CPU 序列号。特别感谢!
...全文
368 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢各位,我最后选择了硬盘序列号的获取。CPU的没有搞出来,再次谢谢个位。
klkvc386 2010-05-04
  • 打赏
  • 举报
回复
UP........
sea_spray 2010-05-04
  • 打赏
  • 举报
回复
帮顶,学习
Treeyan 2010-05-04
  • 打赏
  • 举报
回复
cpu 序列号除非bios中设置可以得到,才能获取。主板可以通过硬件屏蔽掉。
  • 打赏
  • 举报
回复
谢谢 TR0J4N ,我没有认为你随便回答问题,主要是我不懂VBS WMI,今天是第一次听说。所以对你说的我没有想到那么多,就没有想到和VC有联系,实在不好意思,知道的太少。
qjipa 2010-05-04
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20041130/11/3601088.html

楼主先看看这个,如果你是为了取得唯一的序列号,那基本上不可能的,wmi的方式只能获取cpu厂商有关的id,很多机器会重复的
MoXiaoRab 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bao20080513shengbin 的回复:]
谢谢 TR0J4N 我想需要一个 VC 的程序,这个VBScrip的我不好用。
[/Quote]
你看我像是那种胡乱答题的人吗?我给你的VBS是关键,写明了名称空间和属性,你改成C++调用WMI就可以了。具体怎么改,请参考我的这篇文章
http://blog.csdn.net/Tr0j4n/archive/2010/01/19/5214384.aspx
oyljerry 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bao20080513shengbin 的回复:]

谢谢 TR0J4N 我想需要一个 VC 的程序,这个VBScrip的我不好用。
[/Quote]
VC也可以调用WMI API...
jyh_baoding 2010-05-04
  • 打赏
  • 举报
回复
帮顶一个
huziwu 2010-05-04
  • 打赏
  • 举报
回复
学习,帮你顶下
  • 打赏
  • 举报
回复
自己顶起!
  • 打赏
  • 举报
回复
谢谢 TR0J4N 我想需要一个 VC 的程序,这个VBScrip的我不好用。
MoXiaoRab 2010-05-04
  • 打赏
  • 举报
回复
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objItem In colItems
objItem.ProcessorId//就是
Exit For

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧