Borland Code konvertieren:
-
Hallo Forum,
ich möchte die Serial der CPU auslesen und habe diesen Code gefunden:
// Pentium III serial detection // Console mode Win32 program which uses VCL // Borland C++Builder 4 and 5 PRO // Hens Zimmerman, <hens@gmx.net> // Suppress W8002 (Restarting compile using assembly) #pragma option -w-asc // Enable streaming operators for AnsiString #define VCL_IOSTREAM #include <vcl.h> #pragma hdrstop #include <iostream> int main(){ unsigned long FeatureFlags; unsigned long SerialMostSignificantBits; unsigned long SerialMiddleSignificantBits; unsigned long SerialLeastSignificantBits; asm mov eax, 1; // Hardcoded CPUID instruction __emit__(0x0f); __emit__(0xa2); __asm{ mov FeatureFlags, edx mov SerialMostSignificantBits, eax mov eax, 3 } // Hardcoded CPUID instruction __emit__(0x0f); __emit__(0xa2); __asm{ mov SerialMiddleSignificantBits, edx mov SerialLeastSignificantBits, ecx } // Is serial number enabled? bool SerialEnabled = (FeatureFlags & 0x40000); if(SerialEnabled){ AnsiString Information; Information.sprintf( "Feature flags: %X\nSerial: %.08X%.08X%.08X", FeatureFlags, SerialMostSignificantBits, SerialMiddleSignificantBits, SerialLeastSignificantBits ); std::cout << Information << std::endl; } else std::cout << "Serial number not available" << std::endl; return 0; }Der ist leider für Borland geschieben. Teilweise ist der ASM Code in die Makros gekapselt. Teilweise nicht: Was ist das für Code? Wenn ich ihn auch __ASM{} kapsele gibt es Fehler. Hat das mit dem ASM-Pragma zu tun?
Vielen Dank
-
int main(){ unsigned long FeatureFlags; unsigned long SerialMostSignificantBits; unsigned long SerialMiddleSignificantBits; unsigned long SerialLeastSignificantBits; // Hardcoded CPUID instruction __asm{ mov eax, 1; cpuid mov FeatureFlags, edx mov SerialMostSignificantBits, eax mov eax, 3 cpuid mov SerialMiddleSignificantBits, edx mov SerialLeastSignificantBits, ecx } // Is serial number enabled? bool SerialEnabled = (FeatureFlags & 0x40000)!=0; if(SerialEnabled){ char szInformation[128]; sprintf(szInformation, "Feature flags: %X\nSerial: %.08X%.08X%.08X", FeatureFlags, SerialMostSignificantBits, SerialMiddleSignificantBits, SerialLeastSignificantBits ); std::cout << szInformation << std::endl; } else std::cout << "Serial number not available" << std::endl; return 0; }
-
Laut WMI hat mein Pentium4 eine CPU ID. Der obige Code sagt das es keine gibt. Muß ich Adminrechte haben um den Code benutzen zu können? (Funktioniert es bei Dir?)
-
Es gibt BIOS Versionen, bei denen diese Funktion gar nicht eingeschaltet werden kann!
-
Funktioniert der Code bei jemand?
Hier ist ein C# Projekt von www.codeproject.com wo man die ID über WMI herausbekommt:
http://www.codeproject.com/vbscript/VvvHardwareInfo.asp
Die index.hta starten, dann Menu Processor -> ProcessorID.
Ist es die gleiche ID?Meine ID ist: BFEBFBFF00000F29
Wenn ich mit der im Internet nachschaue scheint diese ID mehr den Prozessortyp zu identifizieren als meine CPU im Speziellen.
-
Die Seriennummer scheint es gar nicht mehr zu geben. Intel will keine Prozessoren mehr mit Serial ausliefern. Zdnet Meldung von 2000:
http://www.zdnet.de/news/hardware/0,39023109,2051644,00.htmIntel wird in Zukunft darauf verzichten, seine Prozessoren mit einer Identifikationsnummer auszustatten. "Wir haben diese Entscheidung Anfang des Jahres getroffen," sagte Intel-Sprecher George Alfs.
Dann hat sich die Sache erledigt. Trotzdem vielen Dank Martin
