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 isthKeyUserRandID?
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