[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.


Anmelden zum Antworten