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/82

    Auch 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!


Anmelden zum Antworten