RegOpenKeyEx liefert leider unvollständigen String
-
Hallo,
bekomme leider nur den Anfang des Strings.
zum Verständnis hier der CodeHKEY hKey; char *sz_wert = new char[MAX_PATH]; ZeroMemory(sz_wert, MAX_PATH); DWORD KeySize = MAX_PATH; if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\PC Alert 4"),NULL,KEY_QUERY_VALUE,&hKey) == ERROR_SUCCESS) { cout << "PC Alert 4 key vorhanden" << endl; RegQueryValueEx(hKey, TEXT("UninstallString"), NULL,NULL, (LPBYTE)sz_wert, &KeySize) ; cout << sz_wert << endl; } RegCloseKey(hKey);sz_wert liefert mir aber nur D zurück.
sollte aber
D:\WINDOWS\IsUninst.exe -f"D:\Programme\MSI\PC Alert 4\Uninst.isu"
zurückliefern.Was mache ich verkehrt ?
wie muss mein Aufruf aussehen damit ich den kompletten String bekomme ?Gruß
central
-
Schau mal in deine Projekt-Settings, ob du als Ansi oder Unicode übersetzt hast - im letzteren Fall würdest du einen UNICODE-String zurückbekommen. Zur Lösung des Problems kannst du entweder konsequent mit den Unicode-Einstellungen arbeiten (TCHAR anstelle von char), dein Projekt umstellen auf Ansi-Modus oder explizit die RegQueryValueExA() aufrufen.
-
Vielen Dank,
nachdem ich aufUse Multi-BYte Character Set
umgestellt habe.
Funktioniert es wie es soll
Wahnsinn da wäre ich im leben nicht drauf gekommen.Nochmal vielen Dank.
Gruß
central
-
Man muß nur wissen, wonach man suchen soll
Und im MSDN-Eintrag von RegQeuryValueEx() steht auch die Lösung drin:REG_SZ
A null-terminated string. It will be a Unicode or ANSI string depending on whether you use the Unicode or ANSI functions.