Probleme beim Regestry auslesen
-
Hey Leute! Und zwar will ich die Version und das Datum meines Bios auslesen mit Hilfe der regestry. Alles Gut und Schön; das Datum lässt sich supper auslesen, nur nachdem ich ein zweites Mal den selben Schlüssel auslesen will (für Version), liefert er mir das selbe Ergebnis (=Datum)!
Hier mein Quellcode:
char ziel[256]="SystemBiosDate", end[256]="SystemBiosVersion";
HKEY hkey;
char Biover[256]="";
char dest[256]="HARDWARE\\DESCRIPTION\\System";
char variable[256]="", var[256], test[256]="";
DWORD dwData=256;
BYTE cDaten[256]="";if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,dest,0,KEY_ALL_ACCESS,&hkey)==ERROR_SUCCESS)
{
RegQueryValueEx(hkey,ziel,0,0,cDaten,&dwData);
sprintf (variable,"%s",cDaten);
strcpy (var,variable);
printf ("Date: %s",var);
}
RegCloseKey(hkey);if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,dest,0,KEY_ALL_ACCESS,&hkey)==ERROR_SUCCESS)
{
RegQueryValueEx(hkey,end,0,0,cDaten,&dwData);
sprintf (test,"%s",cDaten);
strcpy (Biover,test);
printf ("Version: %s",Biover);
}
RegCloseKey(hkey);Ausgabe:
Date: 25/06/1982
Version: 25/06/82Auch wenn ich Variablenamen ändere, tut sich am Ergebnis nichts!
Hab die Ausdrücke überwacht und bin zu dem Ergebnis gekommen, dass der Compiler den Pointer -cDaten- keinen neuen Wert zuweist.
Weiß jemand, woran das liegen könnte?? Wäre sehr dankbar über eure Antworten!
-
RegQueryValueEx liefert, ebenso wie RegOpenKeyEx, einen Fehlercode zurück. Ich rate jetzt mal ins Blaue, daß da ERROR_MORE_DATA zurückkommt, da Du dwData vor dem zweiten Aufruf (RegQueryValueEx) nicht initialisiert hast.
BTW: Welchem Zweck dienen die beiden Aufrufe von strcpy?
-
Danke danke! Hat wirkli an der Initialisierung gelegen!
strcpy is noch von meiner früheren Version drin geblieben! Dient nur zur weiteren Verarbeitung!