[Registry] Unicode-Strings vernünftig speichern
-
Hallo Community.
Ich bin auf der Suche nach einer Lösung, mit der ich Unicode-Strings (WCHARs} laden und speichern kann. Dazu wollte ich die Funktionen RegQueryValueEx und RegSetValueEx verwenden. Das Problem ist die Konvertierung der Variablen.
Was nun?
Danke.
-
hat denn keiner ne idee?
Gegeben ist ein geöffneter Schlüssel und ein WCHAR[MAX_PATH]. Wie bekomme ich das WCHAR in die Registry???
Danke.
-
Verwende "RegQueryValueExW" und "RegSetValueExW", dann sollte es sehr einfach gehen... (siehe MSDN-DOku; sogar mit Beispiel).
Und was meinst DU mit "Konvertierung"???? Was willst Du wohin konvertieren?
-
Ich meine, ich habe doch ein LPBYTE als lpData.
Aber wie bekomme ich mein LPWSTR darein und wie bestimme ich die Größe in Byte?
Danke.
-
oh man
-
So, ich kann jetzt lesen:
BYTE bBuffer[MAX_PATH * sizeof(WCHAR)]; DWORD cbBuffer, dwType; HKEY hKey; RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\ShareManager"), 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, 0); cbBuffer = sizeof(bBuffer); if ((RegQueryValueEx(hKey, TEXT("IncomingDirectory"), 0, &dwType, bBuffer, &cbBuffer) == ERROR_SUCCESS) && (dwType == REG_SZ)) memcpy(szIncomingDirectory, bBuffer, sizeof(szIncomingDirectory)); else szIncomingDirectory[0] = L'\0'; // ...
Aber beim Schreiben in die Registry bekomme ich noch Probleme:
cbBuffer = sizeof(bBuffer); memcpy(bBuffer, szIncomingDirectory, sizeof(bBuffer)); RegSetValueEx(hKey, TEXT("Test"), 0, REG_SZ, bBuffer, cbBuffer);
Wenn ich regedit öffne, stehen da so komige '...' als Wert. Wenn ich diesen dann bearbeiten will, ist das Feld leer.
Danke.