CPU Model auslesen!
-
aesse schrieb:
OK:
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",0,KEY_ALL_ACCESS,&hkey);
Bekomme 0 raus! Weiß nicht warum???
Noch so ein Programmierer, der unbedingt will, daß seine Programme nur als Admin laufen, damit ja alle Viren und sonstiger Schrott freie Bahn haben. Versuchst mal damit:
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",0,KEY_READ,&hkey);
mfg Martin
-
Und besser mit RegQueryValueExA()...
-
mgaeckler schrieb:
aesse schrieb:
OK:
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",0,KEY_ALL_ACCESS,&hkey);
Bekomme 0 raus! Weiß nicht warum???
Noch so ein Programmierer, der unbedingt will, daß seine Programme nur als Admin laufen, damit ja alle Viren und sonstiger Schrott freie Bahn haben. Versuchst mal damit:
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",0,KEY_READ,&hkey);
mfg Martin
Du mußt auch die Größe mitgeben:
size = MAX_PATH; LONG Fehler = RegQueryValueEx(hkey,"ProcessorNameString",0,&type,(LPBYTE)processorname,&size);
so funktioniert's:
void __fastcall TForm1::FormShow(TObject *Sender) { HKEY hkey; DWORD type; DWORD size; //DWORD dwData = sizeof(DWORD); LONG ret; AnsiString RetStr; char processorname[MAX_PATH]; // (1) Processor Name ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",0,KEY_READ,&hkey ); if(ret == ERROR_SUCCESS) { size = MAX_PATH; LONG Fehler = RegQueryValueEx(hkey,"ProcessorNameString",0,&type,(LPBYTE)processorname,&size); if(Fehler == ERROR_SUCCESS) RetStr = AnsiString(processorname); else RetStr = "Fehler: "+IntToStr(int(GetLastError())); RegCloseKey(hkey); } Caption = RetStr; }
mfg Martin
-
Bei mir gibt die Funktion nichts zurück! Leer!
-
aesse schrieb:
Bei mir gibt die Funktion nichts zurück! Leer!
Merkwürdig, der Rückgabetyp von RegQueryValueEx ist aber long. Wie kann der leer sein?
-
aesse schrieb:
Bei mir gibt die Funktion nichts zurück! Leer!
Hast Du denn auch die Größe angegeben?
-
Funktioniert alles!!!
ich hatte die letzte Zeile im letzten Postcode einfach rauskopiert und nicht geändert, aber jetzt:
HKEY hkey; DWORD type; DWORD size = MAX_PATH; //DWORD dwData = sizeof(DWORD); LONG ret; AnsiString RetStr; char processorname[MAX_PATH]; // (1) Processor Name ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",0,KEY_READ,&hkey); if(ret == ERROR_SUCCESS) { LONG Fehler = RegQueryValueExA(hkey,"ProcessorNameString",0,&type,(LPBYTE)processorname,&size); if(Fehler == ERROR_SUCCESS) RetStr = AnsiString(processorname); else RetStr = ""; RegCloseKey(hkey); } return RetStr;
Und Vielen Dank, habe ich wieder was dazu gelernt!
-
Wenn du explizit mit char arbeitest, dann immer auch die passende *A Variante der WinAPI Funktionen nehmen.
-
Danke werde ich tun!!!
-
Nur so als Ergänzung: Das gleiche gilt natürlich auch, wenn du explizit mit wchar_t arbeitest, dann immer die *W Varianten nehmen...