Liest Registry nur teilweise aus



  • Hallo,

    ich habe ein Programm geschrieben, das auf einen selbsterstellten Schlüssel in der Registry zugreift und vier Werte aus diesem ausliest. Das funktioniert eigentlich ganz gut, nur wenn ich z.B. die Reihenfolge der Werte, aus denen er auslesen soll, ändere, dann geht gar nichts mehr. Manchmal liest er aus, manchmal nicht. Dann muss ich die Werte, die er nicht mehr ausliest aus der Registry löschen und neue erstellen mit neuen Namen (!), dann gehts wieder oder auch nicht.

    DWORD u = MAX_PATH;
    
        LPTSTR tempStr1=m_str1.GetBuffer(MAX_PATH);
        LPTSTR tempStr2=m_str2.GetBuffer(MAX_PATH);
        LPTSTR tempStr3=m_str3.GetBuffer(MAX_PATH);
        LPTSTR tempStr4=m_str4.GetBuffer(MAX_PATH);
    
        if(reg.Open(HKEY_LOCAL_MACHINE,"Software\\myprogs\\myapp",KEY_READ)==ERROR_SUCCESS)
        {
            reg.QueryStringValue(_T("Wert1"),tempStr1,&u);
            reg.QueryStringValue(_T("Wert2"),tempStr2,&u);
            reg.QueryStringValue(_T("Wert3"),tempStr3,&u);
            reg.QueryStringValue(_T("Wert4"),tempStr4,&u);
            reg.Close();
        }
    

    Kann es sein, dass er nicht so viele Registry-Einträge auf einmal auslesen kann? Muss ich zwischendrin die Registry wieder schließen und dann wieder öffnen?

    Vielen Dank schon im voraus !



  • Schau mal hier. Steht ein paar Zeilen unter Dir. Müsste das gleiche Problem sein, wie bei Dir!

    [url]http://www.c-plusplus.net/ubb/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=1&t=013150 [/url]

    Gruß

    PS: Erst suchen



  • Du musst nach jedem QueryString dein u neu initialisieren. Da steht die Länge des gelesenen Strings drin.

    reg.QueryStringValue(_T("Wert1"),tempStr1,&u);
    u = MAX_PATH;
    reg.QueryStringValue(_T("Wert2"),tempStr2,&u);
    u = MAX_PATH;
    reg.QueryStringValue(_T("Wert3"),tempStr3,&u);
    u = MAX_PATH;
    reg.QueryStringValue(_T("Wert4"),tempStr4,&u);
    

    QueryString liest nur soviele Zeichen, wie in u stehen. Und wenn beim zweiten Lesen eigentlich mehr Zeichen als beim ersten sind, danmn klappt das eben nicht.



  • So funktionierts einwandfrei !

    Vielen Dank !


Anmelden zum Antworten