![]() |
CPUID Code funktioniert nicht
Hallo,
habe folgenden Code, um die CPU ID auszulesen:
Delphi-Quellcode:
function IsCPUID_Available: Boolean; register;
asm PUSHFD {direct access to flags no possible, only via stack} POP EAX {flags to EAX} MOV EDX,EAX {save current flags} XOR EAX,ID_BIT {not ID bit} PUSH EAX {onto stack} POPFD {from stack to flags, with not ID bit} PUSHFD {back to stack} POP EAX {get back to EAX} XOR EAX,EDX {check if ID bit affected} JZ @exit {no, CPUID not availavle} MOV AL,True {Result=True} @exit: end; 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 CPUIP: string; //IntToPos ist notwendig, da in extrem seltenen Fällen negative CPU-ID's vorkommen function IntToPos(Value: Integer): integer; overload; begin if Value < 0 then Result := -Value else Result := Value; end; function IntToPos(Value: Int64): int64; overload; begin if Value < 0 then Result := -Value else Result := Value; end; begin if IsCPUID_Available then result := IntToStr(IntToPos(GetCPUID[1])) + IntToStr(IntToPos(GetCPUID[2])) + IntToStr(IntToPos(GetCPUID[3])) + IntToStr(IntToPos(GetCPUID[4])) else result := '175021702841343820673'; //Dummywert end; Habe gedacht dies ist ein funktionierender Code(Quelle weiss ich nicht mehr), leider scheint der Code nicht zu funktionieren. Auf 3 Rechnern, die mit Images erstellt worden, liefert der Code jedesmal dieselbe ID. Es wäre sehr nett, wenn jemand mit Assembler Kenntnissen mal genau schauen könnte, was der Code genau macht. Sollte der auf allen Boards laufen? Was ist mit Dual-Prozessoren? Welche alternative Möglichkeit bleibt für eine halbwegs eindeutige ID? Aus dem Thread "Eindeutige ID" blieb nur die Festplattennummer übrig, oder? (Ich weiss, nach Formatierung wieder geaendert) Viele Gruesse lkz633 |
Re: CPUID Code funktioniert nicht
Suche doch hier im Forum mal nach "CPUID" von scp. Das sollte dir eigentlich helfen.
Zu den Dual - Prozessoren: Der CPUID - Code / Assembler wirkt natürlich nur auf dem Prozessor, auf dem das Programm auch läuft. Insofern bekommst du immer nur den Wert eines Prozessors. Was du unter NT-Systemen machen kannst, ist dein Programm (oder vielmehr den Prozesss) auf einen anderen Prozessor laufen zu lassen. |
Re: CPUID Code funktioniert nicht
Hallo,
vielleicht können Sie mir über die Format meiner CPU-ID helfen? da: ![]() Gruß |
Re: CPUID Code funktioniert nicht
Auch wenn es alt ist und nur ausgegraben wurde, es wird ja anscheinend immernoch gefunden. Von daher...
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz