2009-08-01 2 views
1

Ich speichere einige kurze Benutzerdatenfolgen in der Windows-Registrierung. Dies funktionierte gut, bis einer meiner Benutzer versuchte, eine Zeichenfolge mit einem \ Zeichen zu speichern. Dies wurde dann als Registrierungspfadbegrenzer interpretiert.So speichern Sie beliebigen Text (einschließlich "") in der Windows-Registrierung

Was ist die beste Vorgehensweise, um dieses Problem zu vermeiden? Eine Art einfache Kodierung?

Hinweis/Ich verwende die Qt QSetting-Klasse, um über C++ auf die Registrierung zuzugreifen. Daher wäre mir eine allgemeingültige Antwort lieber als eine spezielle MS-Tool/Sprache.

+0

Es stellte sich heraus, dass ich die Zeichenfolge mit dem \ in den Schlüssel gespeichert habe (nicht die Daten, wie ich ursprünglich dachte). Es ist also nicht verwunderlich, dass das nicht funktioniert hat. Bitte bring mich aus meinem Elend und schließe/lösche die Frage. –

Antwort

2

Sie sollten die QSettings::setValue() Funktion direkt verwenden können. Wenn das nicht funktioniert (für den Wert, nicht den Schlüsselnamen), dann klingt das wie ein Fehler in Qt. Der Abschnitt auf Key Syntax erwähnt ausdrücklich, dass Schrägstriche nicht für Schlüsselnamen verwendet werden sollten, aber nicht sehen, was mit Werten falsch wäre.

+0

Stöhnen. Bei weiterer Überprüfung stellt sich heraus, dass ich andere Daten gespeichert habe. Also habe ich die Benutzerzeichenfolge als letzten Teil des Schlüssels verwendet und den Rest der Daten als Wert gespeichert. Es ist also kaum verwunderlich, dass es versaut hat. Mein Fehler. –

2

RegSetKeyValue bricht den Schlüssel, Unterschlüssel und Wert in verschiedene Parameter.

Alle registry functions in MSDN.

+0

Ich verwende die Qt API, um auf die Registrierung zuzugreifen, nicht die MS Win32 API. Ich bevorzuge es, die beiden nicht zu mischen oder alles in Win32 API neu zu schreiben. –

+0

Ah. Ich habe die "generische" Anfrage als "low level"/sprach-agnostisch und nicht als Qt-spezifisch verstanden. –