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 序列号。特别感谢!
For Each objItem In colItems
objItem.ProcessorId//就是
Exit For
http://blog.csdn.net/Tr0j4n/archive/2010/01/19/5214384.aspx