"HKEY"- Problem, brauch dringend Hilfe



  • Hallo,

    ich möchte meine Daten in der Registry abspeichern, so dass sie auch nach der Schließung der Anwendung abgespeichert sind.

    Einzelne Variable des Types DWORD kann ich abspeichen mit folgendem Code:

    [code] HKEY hkey;
    DWORD dwgroesse=0;
    DWORD test = 1234;

    dwgroesse=sizeof(test);
    RegOpenKeyEx(HKEY_CURRENT_USER,NULL,0,KEY_SET_VALUE,&hkey);
    RegSetValueEx(hkey,"TestSpeicher",NULL,REG_DWORD,
    (LPBYTE)test ,dwgroesse);
    RegCloseKey(hkey); [/code]

    Die Daten kann mit Hilfe des folgenden Codes wieder aus dem Speicher holen:

    HKEY hkey;
        DWORD dwtyp=0, dwgroesse=0;
        DWORD Daten; 
    
        dwgroesse=sizeof(TelNr);
            RegOpenKeyEx(HKEY_CURRENT_USER,NULL,0,KEY_READ,&hkey);  
            RegQueryValueEx(hkey,"TestSpeicher",NULL,&dwtyp,
                            (LPBYTE)&Daten,&dwgroesse);
    
    Die geholten Daten stehen jetzt unter "Daten".
    

    Mein Problem:

    Wenn ich CString-Variable speichere funktioniert das nicht!!!!!
    Ich benutze auch bei Abspeicheung statt REG_DWORD auch REG_SZ.

    Kann mir jemand Beispielcode geben mit dem es geht???

    Bin seit zwei Tagen darn, kein Land zu sehen.

    Danke



  • Also ich habe es nicht ausprobiert, aber wenn du in RegSetValueEx anstatt REG_DWORD REG_SZ nimmst sollte das klappen



  • Hi,
    ich denke dein Problem ist der Zeiger auf dein Cstring-Objekt.Da gibts ne Methode getbuffer.
    probier mal (BYTE*)deinString.GetBuffer(0) als Pointer zu übergeben.
    Musst du später mit releaseBuffer wieder freigeben!!

    MfG Spacelord 🙂



  • Guck mal in die FAQ!!



  • @Commander:

    Leider kann man hier nicht mit CStrings arbeiten und muss auf die unschönen C-Strings zurückgreifen.

    Nichts für ungut,aber das Einzige was zu Registry\CString in den FAQ steht,ist dass es mit CString-Objekten nicht funzt!

    MfG Spacelord 😉



  • komisch das ich es aber nutzte...
    schonmal ans formatieren gedacht??

    CString test;
    CRegKey key;
    char buffer[255];
    DWORD dwCount = sizeof(buffer);
    key.Open(HKEY_LOCAL_MACHINE,"Software\\Bla", KEY_READ);
    key.QueryValue(buffer,"BlaBlub",&dwCount); //Blablub ist REG_SZ bei mir
    key.Close();
    test = buffer;
    

    DAs funktioniert..


Anmelden zum Antworten