在网上找了很多,全部都是这样的代码:
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有时候就会发生变化了,请问大家有其他的好方法没?