获取CPUID急救!!!
如题
要支持builder 5 的,能测出CPU速度大于2G的CPUID;
给下源代码,
给个相关接口也行。
谢谢了
[解决办法]
String __fastcall GetCPUID(){ #define CPUID dw 0xa20f DWORD dwCPUName, dwCPUReserved1, dwCPUReserved2, dwCPUID; String strCPUID; asm { PUSHAD MOV EAX, 1 CPUID MOV dwCPUName, EAX MOV dwCPUReserved1, EBX MOV dwCPUReserved2, ECX MOV dwCPUID, EDX POPAD } strCPUID.sprintf("%.8X", dwCPUID); return strCPUID;}
[解决办法]
一、网上流行的这段代码不能取出CPU的唯一值。
二、Intel原来曾经想搞出CPU的唯一值来着,但是受到多个国家,包括中国的反对。就算有唯一值的CPU,也有很多的主板上有这样一项开关:“是否允许CPU ID被获取”。该事件大约是在P3刚出时。
三、ccrun给出的这段代码可以加以完善一些,可以更好地区分出CPU,修改如下:
String GetCPUID()//取CPUID。
{
#define CPUID dw 0xa20f
DWORD dwCPUName, dwCPUReserved1,dwCPUReserved2,dwCPUID;
String strCPUID;
asm
{
PUSHAD
MOV EAX, 1
CPUID
MOV dwCPUName, EAX
MOV dwCPUReserved1, EBX
MOV dwCPUReserved2, ECX
MOV dwCPUID, EDX
POPAD
}
strCPUID.sprintf("%08X-%08X-%08X", dwCPUID,dwCPUName,dwCPUReserved2);//dwCPUReserved1不用
return strCPUID;
}