Seite 1 von 1
Registry Eintrag lesen mit hilfe von QSettings
Verfasst: 10. März 2011 11:50
von slim10
Hi an alle,
ich hoffe ihr könnt mir helfen und zwar möchte ich gern aus einem Registrykey den Value-Wert auslesen.
Dies funktioniert auch sehr gut, so lange es unter HKEY_CURRENT_USER ist, aber eig. hätte ich des gern unter HKEY_LOCAL_MACHINE und da funzt des leida nicht
ich denke das ich mit dem QSettings nicht die nötigen rechte hab von diesem Key zu lesen...kann des sein? oder gibt es einen Weg mit dem ich aus HKLM lesen kann?
wäre schön wenn mir jemand helfen könnte
und danke schon mal

Verfasst: 10. März 2011 12:04
von franzf
In der Doku zu QSettings steht eigentlich, dass es funktionieren sollte.
Schau dir die Abschnitte "Fallback Mechanism" und "Platform-Specific Notes" an.
Verfasst: 10. März 2011 12:16
von RHBaum
QSettings ist nur ne comfortklasse, um "Settings" komfortabel im Schema der Plattform abzuspeichern.
Über die mechanismen im Hintergrund schiesst das Ding sowieso 1:1 auf die WinApi.
Die Rechte sind unabhaengig von QSettings.
Die rechte bestimmt der Prozess , also die UserID mit der der Prozess gestartet wird. Hasst keine "Adminrechte", wirst nicht auf HKEY_LOCAL_MACHINE lesen / schreiben, egal ob ueber QSettings / oder WInApi direkt. logisch oder ?
Wenn Du die Vorgabe scho hasst, HKEY_LOCAL_MACHINE zu verwenden, hasst du eh kein normales Userprogramm, also bewegst du dich abseits vom Mainstream. Du schreibst quasi nen systemverwalter-prog.
Ich wuerd auf QSettings verzichten, und direkt auf die Winapi gehen ...
Stichworte fuer die WinAPI sind in dem Zusammenhang:
RegCreateKeyEx
RegDeleteKey
RegCloseKey
RegSetValueEx
....
Ciao ...
Verfasst: 10. März 2011 12:46
von slim10
Die rechte bestimmt der Prozess , also die UserID mit der der Prozess gestartet wird. Hasst keine "Adminrechte", wirst nicht auf HKEY_LOCAL_MACHINE lesen / schreiben, egal ob ueber QSettings / oder WInApi direkt. logisch oder ?
ja des is logisch
und des mit der WinApi hab ich auch schon in erwägung gezogen, bloß hab ich dann des mit QSettings gesehn und hab gedacht das des irgendwie geht
dann werd ichs mal mit der WinApi versuchen
dankeschön

Verfasst: 10. März 2011 16:49
von RHBaum
Es geht scho ...
mit QSettings::NativeFormat und QSettings::SystemScope wird er dir unter windows Deine Einträge unter HKEY_LOCAL_MACHINE\Software\Organization\AppName speichern wollen.
Problem ist, zum schreiben brauchst du Rechte (AdminRechte egal ob winXP oder Vista+, unter XP hatte man die nur automatischer ).
Lesen sollte auch ohne adminrechte gehen.
Settings solltest nur verwenden, wenn QT das Format und die Structur überlassen willst. Also fensterposis wegspeichern und so, da isses echt praktisch. Aber Fensterposis in LocalMachine ?
Hasst du vorgaben wie deine Eintraege auszuschauen haben, und vor allem wie strukturiert usw, dann kommst mit der WinApi meist besser voran.
Richtiger waer statt HKEY_LOCAL_MACHINE generell zu verwenden, zuerst den HKEY_CURRENT_USER zu consultieren, und erst wenn es da nix gibt, HKEY_LOCAL_MACHINE schauen. und nur schauen.
Zurueckschreiben generell nach HKEY_CURRENT_USER. Wenn es so implementierst, dann kann QSettings dir ne Menge arbeit abnehmen.
Ich find QSettings scho geil, aber ich will auch nicht in die Regestry schreiben, ich nehm immer das ini format
Ciao ...
Verfasst: 11. März 2011 12:59
von slim10
also des mit den Admin-Rechten ist ein Stress, denn des kann ich bei den Project-Propertis einstellen, das die .exe nur mit Admin-Rechte ausführen kann.
bloß ich muss leider aus HKLM einträge ändern, lesen und löschen können
und ich weiß net geht des mit QSettings?
oda doch die WinAPI?
Verfasst: 11. März 2011 13:01
von slim10
sry hab mich bei den beiden fragen falsch ausgedrückt
ich meinte eig. ob es mit QSettings gut funktionieren könnte oder ob die WinAPI dafür besser geeignet wäre?
Verfasst: 11. März 2011 13:37
von RHBaum
Wenn dir das format und die Struktur egal sind, und du eher nix loeschen willst, sondern eher einfach nur Einstellungen wegserialisieren -> Qsettings
Hasst du formatvorgaben und deine Keys befinden an abweichenden stellen vom Qt Schema ... muesstest du QSettings reimplementieren. Miest ist die Winapi dann der kürzere Weg.
Plattformunabhaengigkeit killst eh damit.
Ciao ...
Verfasst: 11. März 2011 14:03
von franzf
RHBaum hat geschrieben:Hasst du formatvorgaben und deine Keys befinden an abweichenden stellen vom Qt Schema ... muesstest du QSettings reimplementieren. Miest ist die Winapi dann der kürzere Weg.
Plattformunabhaengigkeit killst eh damit.
Man muss QSettings nicht neu implementieren, man braucht nur passende ReadFunc und WriteFunc anbieten. Das sollte ein minimaler Aufwand sein, und durch passende Compiletime-switches funktioniert das auch prächtig ohne die Plattformunabhängigkeit zu verlieren.
Verfasst: 14. März 2011 07:43
von slim10
okaii super danke für die Hilfe und den Infos
