在网上找了很多,全部都是这样的代码:
type
TCPUID = array[1..4] of Longint;
TVendor = array [0..11] of char; function GetCPUID: TCPUID; assembler; register;
function GetCPUInfo: string;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 GetCPUInfo:String;
var
CPUID:TCPUID;
begin
CPUID:=GetCPUID;
Result:=IntToHex(CPUID[1],8)+IntToHex(CPUID[2],8)+IntToHex(CPUID[3],8)+IntToHex(CPUID[4],8);
end;但是如果电脑上是双CPU和CPU超频了,同一台电脑上调用这个函数获得的CPU ID有时候就会发生变化了,请问大家有其他的好方法没?
type
TCPUID = array[1..4] of Longint;
TVendor = array [0..11] of char; function GetCPUID: TCPUID; assembler; register;
function GetCPUInfo: string;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 GetCPUInfo:String;
var
CPUID:TCPUID;
begin
CPUID:=GetCPUID;
Result:=IntToHex(CPUID[1],8)+IntToHex(CPUID[2],8)+IntToHex(CPUID[3],8)+IntToHex(CPUID[4],8);
end;但是如果电脑上是双CPU和CPU超频了,同一台电脑上调用这个函数获得的CPU ID有时候就会发生变化了,请问大家有其他的好方法没?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货