Registry String Zugriff mit CRegKey unter Windows 7 64bit



  • Schönen guten Abend,

    ich habe jetzt seit Stunden gesucht warum mein Programm (32bit) unter Vista und XP lief und unter meinem Windows 7 64bit nicht bis ich feststellte das es unter Windows 7 32bit funktioniert.

    Und zwar folgendes. Ich öffne die Registry mit

    ...
    CRegKey RegistrySchluessel;
    ...
    RegistrySchluessel.Create(HKEY_CURRENT_USER, strMainKey, strCmd);
    ...
    

    und versuche dann einen String auszulesen:

    ...
    lRetOpen = RegistrySchluessel.QueryValue(chDBName,"database",&lAnzahlZeichen);
    ...
    

    Wie gesagt, unter 32bit, alles OK. Unter 64 bit auch, ABER NUR wenn in dem String KEINE "-" oder "_" enthalten sind. Ist dieses der Fall, so ist der Rückgabewert von QueryValue 234. Dabei macht es keinen Unterschied ob der String selber nochmal in Anführungszeichen steht oder nicht.
    Beispiel:
    `

    Typ: String: Ergebnis 32bit: Ergebis 64bit:

    REG_SZ datei.csv OK OK

    REG_SZ da-tei.csv OK return 234

    REG_SZ da_tei.csv OK return 234

    `
    Eins noch zu meinem Cpp-Projekt, es ist KEIN Unicode-Projekt, aber kann das Problem damit zu tun haben???

    Hat jemand ähnlich komische Dinge festgestellt oder eine Idee für Abhilfe?

    ks



  • Nachtrag:

    mir ist gerade aufgefallen das es da weitere Unstimmigkeiten gibt. Ich kann zum Beispiel "geburtstag.csv" korrekt auslesen, aber "geburtstagsdat.csv" nicht. Ebenso funktionieren keine Strings mit Leerzeichen unter 64bit.

    Sollte dies ein MFC-Bug sein?



  • dann geb ich dir mal den Tipp deinen computer neu aufzusetzen 😕


  • Mod

    1. Ist CRegKey eine ATL Klasse und gehört nicht zur MFC!
    2. Kanst Du selber den Code prüfen, der ausgeführt wird, und wie Du sehen wirst läuft da gar nichts falsch in dem Code, denn er ist viel zu einfach.


Anmelden zum Antworten