RegQueryValueEx



  • Warum kommen bei mir noch so komischen Zeichen raus und nicht der Installations Pfad?

    #include <windows.h>
    #include <iostream>
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    	HKEY hKey;
    	char InstallPath[MAX_PATH];
    	unsigned long nInstallPath = sizeof(InstallPath);
    
    	RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Activision\\Call of Duty 4", &hKey);
    	RegQueryValueEx(hKey, "InstallPath", NULL, NULL, (LPBYTE)InstallPath, &nInstallPath);
    	RegCloseKey(hKeyUserRandID);
    
    	cout << InstallPath << endl;
    }
    


  • Ich möchte zuerst Folgendes wissen:
    Was ist hKeyUserRandID ?
    Wird dein Registry Key überhaupt erfolgreich geöffnet? Ich gehe stark davon aus, dass der Registry-Eintrag nicht gefunden wird.
    Ausserdem soll's heißen:

    RegCloseKey(hKey);
    

    Grüße,
    Rewind.



  • oh, hab das grad einzelnd zusammengefügt aus meinem Projekt als ich das Thema verfasst habe. So ist es natürlich richtig und auch in meinem Projekt so:

    #include <windows.h>
    #include <iostream>
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        HKEY hKey;
        char InstallPath[MAX_PATH];
        unsigned long nInstallPath = sizeof(InstallPath);
    
        RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Activision\\Call of Duty 4", &hKey);
        RegQueryValueEx(hKey, "InstallPath", NULL, NULL, (LPBYTE)InstallPath, &nInstallPath);
        RegCloseKey(hKey);
    
        cout << InstallPath << endl;
    }
    

    Allerdings wird mir nicht der Pfad ausgegeben, sondern irgendwelche komische Zeichen. Das ist das eigendliche Problem.



  • Bei mir funktioniert es, wenn ich den richtigen Pfad und Key-Namen angebe; andernfalls - "komische Zeichen" 🙂



  • Es ist immer gut, wenn man die Rückgabewerte auswertet...



  • Ein hoch auf den letzten post!



  • Du hast die Identifier verwechselt ! (Kleine Schlamperei)

    nInstallPath ist bei Dir der Buffer Size, und InstallPath ist der String Buffer.
    Du übergibst sie als Parameter genau umgekehrt.

    mfg
    fls


Anmelden zum Antworten