DELPHI讀取CPU的序列號
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> |
因為這段時間要用到CPU的序列號,用它們來做註冊碼,從網上找的原始碼,經測試,可行。原始碼如下:
Unit CPUID;
{***********************************************
* 這個模組是用來獲取CPU序列號,呼叫方式: *
* 在上層程式的uses子句中含CPUID模組,用函式 *
*呼叫 CPUID.GetCPUVendor 獲得CPU的製造商名稱; *
*呼叫 CPUID.GetCPUInfo 得到CPU的序列號. *
*************************************************}
interface
uses
SysUtils;
type
TCPUID = array[1..4] of Longint;
TVendor = array [0..11] of char;
function GetCPUID: TCPUID; assembler; register;
function GetCPUVendor: TVendor; assembler; register;
function GetCPUInfo: string;
implementation
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 GetCPUVendor: TVendor; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Result (TVendor)}
MOV EAX,0
DW $A20F {CPUID Command}
MOV EAX,EBX
XCHG EBX,ECX {save ECX result}
MOV ECX,4
@1:
STOSB
SHR EAX,8
LOOP @1
MOV EAX,EDX
MOV ECX,4
@2:
STOSB
SHR EAX,8
LOOP @2
MOV EAX,EBX
MOV ECX,4
@3:
STOSB
SHR EAX,8
LOOP @3
POP EDI {Restore registers}
POP EBX
end;
Function GetCPUInfo: string;
var
CPUID: TCPUID;
I: Integer;
begin
for I := Low(CPUID) to High(CPUID) do
CPUID[I] := -1;
CPUID := GetCPUID;
Result := IntToHex(CPUID[1], 8) + IntToHex(CPUID[2], 8)
+ IntToHex(CPUID[3], 8)
+ IntToHex(CPUID[4], 8);
end;
end.
搜尋其它相關資源,請用Google搜尋: |
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_sdo.js"> </script> |