Moon-Dog Geschrieben 18. April 2002 Teilen Geschrieben 18. April 2002 Hi Leute ich will aus der Registry die Bios Version auslesen (mit Hilfe der WinAPI) und habe bereits folgenden Quellcode: #include <iostream.h> #include <windows.h> #include <windowsx.h> #include <windef.h> int main (void) { HKEY hkey; DWORD dwData = 256; unsigned char cDaten[256]; RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\DESCRIPTION\System", 0, KEY_ALL_ACCESS, &hkey); RegQueryValueEx(HKEY_LOCAL_MACHINE, "SystemBiosVersion",0,0,cDaten,&dwData); cout << "Die Bios Version ist:" <<cDaten; getchar(); } aber es funktioniert einfach nicht... kann mir da jemand nen Tip geben? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2002 Teilen Geschrieben 18. April 2002 Original geschrieben von Moon-Dog kann mir da jemand nen Tip geben? Klar doch Du musst den HKEY, dessen Adresse du als letzten Parameter an RegOpenKeyEx übergeben hast, als ersten Parameter von RegQueryValueEx angeben. Und hinterher RegCloseKey nicht vergessen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moon-Dog Geschrieben 18. April 2002 Autor Teilen Geschrieben 18. April 2002 ich bin unwissend ich gebs zu... wie mache ich das? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gugelhupf Geschrieben 18. April 2002 Teilen Geschrieben 18. April 2002 Hmm... Mit welchem OS arbeitest Du denn ? Kann Deinen Schlüssel unter meinem W2k nicht finden ! Desweiteren sollte man Reg-Schlüssel wieder schliessen RegCloseKey. RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\DESCRIPTION\System", 0, KEY_ALL_ACCESS, &hkey); Kann mich ja täuschen, aber muss man da nicht "\\" schreiben ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2002 Teilen Geschrieben 18. April 2002 RegQueryValueEx(hkey, "SystemBiosVersion",0,0,cDaten,&dwData); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moon-Dog Geschrieben 18. April 2002 Autor Teilen Geschrieben 18. April 2002 ich arbeite mit WinXP danke ;-) werds gleich mal testen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2002 Teilen Geschrieben 18. April 2002 Original geschrieben von gugelhupf Mit welchem OS arbeitest Du denn ? Kann Deinen Schlüssel unter meinem W2k nicht finden !Unter XP Professional ist er da... Kann mich ja täuschen, aber muss man da nicht "\\" schreiben ??? Muss man. Hatte ich übersehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moon-Dog Geschrieben 18. April 2002 Autor Teilen Geschrieben 18. April 2002 ok.. also einen fehler hab ich noch... SystemBiosVersion ist ein REG_MULTI_SZ aber mit meinem unsigned char cDaten[256] kann ich nur ein REG_SZ auslesen also array von chars und nicht ein array von arrays von chars... also kann mir jemand da nen tipp geben? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2002 Teilen Geschrieben 18. April 2002 Es ist nicht wirklich ein Array von Strings, die MSDN Library ist an dieser Stelle etwas ungenau. Wenn ein REG_MULTI_SZ mehrere Strings enthält, dann liefert RegQueryValueEx alle hintereinander im Puffer, getrennt durch Nullzeichen. Der letzte String ist mit zwei Nullzeichen terminiert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moon-Dog Geschrieben 18. April 2002 Autor Teilen Geschrieben 18. April 2002 ja aber wie lese ich es dann aus? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2002 Teilen Geschrieben 18. April 2002 Das sollte gehen (nicht getestet): for( char *pMulti = (char*) cDaten; *pMulti != '\0'; pMulti += strlen( pMulti )+ 1 ) { cout << "Die Bios Version ist:" << pMulti << endl; } [/CODE] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moon-Dog Geschrieben 18. April 2002 Autor Teilen Geschrieben 18. April 2002 also es funktioniert bei mir nicht richtig... ihr könnt es ja gerne nochmal testen.. hier ist der voll ständige quellcode: /*H.Guessfeldt test2.cpp April 2002*/ #include <iostream.h> #include <windows.h> #include <windowsx.h> #include <windef.h> int main (void) { HKEY hkey; DWORD dwData = 256; unsigned char cDaten[256]; RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System", 0, KEY_ALL_ACCESS, &hkey); RegQueryValueEx(hkey, "SystemBiosVersion",0,0,cDaten,&dwData); for( char *pMulti = (char*) cDaten; *pMulti != '\0'; pMulti += strlen( pMulti )+ 1 ) { cout << "Die Bios Version ist:" << pMulti << endl; } getchar(); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2002 Teilen Geschrieben 18. April 2002 Original geschrieben von Moon-Dog also es funktioniert bei mir nicht richtig Bei mir klappt es prima, ich erhalte zwei Strings. Was genau geht denn nicht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moon-Dog Geschrieben 18. April 2002 Autor Teilen Geschrieben 18. April 2002 bei mir wird nur ne asci zeichen kette ausgegeben... wird bei dir die richtige bios version ausgeben? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2002 Teilen Geschrieben 18. April 2002 Original geschrieben von Moon-Dog wird bei dir die richtige bios version ausgeben? Nein, aber das Programm gibt genau das aus, was in der Registry steht... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Blueeye Geschrieben 18. April 2002 Teilen Geschrieben 18. April 2002 Habe das auch mal ausprobiert! Bei mir wird die richtige Biosversion ausgegeben: Award Modular BIOS v4.51PG Weiß allerdings auch nicht, warum er es bei mir zeigt und bei Euch nur ne ASCI-Zeichenkette ausgibt. In meiner Registry steht auch nur ne Zeichenkette, die anscheint von Programm übersetzt werden kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moon-Dog Geschrieben 18. April 2002 Autor Teilen Geschrieben 18. April 2002 also leute erstmal euch allen danke, der Quellcode (der letzte) ist richtig... es lag an den Sicherheitseinstellungen das es bei mir nicht richtig lief. Hab es noch mal als Admin getest und es lief korrekt ;-) also wer es braucht, bedient euch :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.