据说CPUID不唯一,同一个系列的CPU其CPUID相同?没研究清楚。
做这个的最初是想做个根据机器码生成注册码的一个注册应用程序,所以找到了这个方法:还不错,分享一下:
function GetCPUID: TCPUID; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Resukt}
MOV EAX,1
DW $A20F {CPUID Command}
STOSD {CPUID[1]}
MOV EAX,EBX
STOSD {CPUID[2]}
MOV EAX,ECX
STOSD {CPUID[3]}
MOV EAX,EDX
STOSD {CPUID[4]}
POP EDI {Restore registers}
POP EBX
end;
function TRegisterFrm.GetComputerSeries: string;
var
I: Integer;
nNum: Longint;
CPUID: TCPUID;
begin
Result := '';
CPUID := GetCPUID;
Result := IntToHex(CPUID[1] , 8) + IntToHex(CPUID[2] , 8) + IntToHex(CPUID[3]
, 8) + IntToHex(CPUID[4] , 8);
end;
当然需要声明这样一个类型:
type
TCPUID = array[1..4] of Longint;
TVendor = array [0..11] of char;
function GetCPUID: TCPUID; assembler; register;
完整的代码就暂时不贴出来了,等完成了一起整到下载吧。有想看的可以联系我O(∩_∩)O
共同学习,共同成长