Seite 1 von 1
[gelöst] Daten in die Registry schreiben und lesen unter Win
Verfasst: 22. Juli 2005 10:29
von BartSimpson
Hallo, wie kann ich mit QT4 Werte aus der Registry lesen z.b den Schlüssel
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
und nach in den Schlüssel Run Werte schreiben.
Verfasst: 22. Juli 2005 10:51
von Christian81
Ich würde sagen mit
QSettings.
Re: Daten in die Registry schreiben und lesen unter Windows
Verfasst: 22. Juli 2005 12:26
von macman
BartSimpson hat geschrieben:Hallo, wie kann ich mit QT4 Werte aus der Registry lesen z.b den Schlüssel
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
und nach in den Schlüssel Run Werte schreiben.
Gar nicht, zumindest habe ich noch nichts gefunden. Da die Registry sowieso ein Windows Eigenunkraut ist, mach es mit Präprozessor-Defs:
#ifdef Q_WS_WIN
.
.
.
#endif
Ansonsten würde ich die Finger von der Registry lassen. Was Dümmeres konnten die sich nicht einfallen lassen.
Re: Daten in die Registry schreiben und lesen unter Windows
Verfasst: 22. Juli 2005 12:30
von Christian81
macman hat geschrieben:BartSimpson hat geschrieben:Hallo, wie kann ich mit QT4 Werte aus der Registry lesen z.b den Schlüssel
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
und nach in den Schlüssel Run Werte schreiben.
Gar nicht, zumindest habe ich noch nichts gefunden.
Sag mal kannst Du nicht lesen??
Re: Daten in die Registry schreiben und lesen unter Windows
Verfasst: 22. Juli 2005 12:43
von macman
Christian81 hat geschrieben:Sag mal kannst Du nicht lesen??
Oh erleuchte mich

QSettings ist dazu gedacht programmspezifische, persönliche Einstellungen zu sichern und das kann man auch in der Registry. QSettings ist nicht dazu gedacht irgendwelche Daten aus der Registry zu lesen und zu schreiben. Falls Du es besser weißt, dann gib mir ein Stückchen Code wie Du an einen Wert aus HKEY_CLASSES_ROOT oder HKEY_LOCAL_MACHINE kommst.
Verfasst: 22. Juli 2005 13:00
von Christian81
HKEY_CLASSES_ROOT wollte er gar nichts schreiben und das geht wirklich nict mit QSettings.
HKEY_LOCAL_MACHINE geht mittels QSettings::Scope = QSettings::SystemScope
QSettings ist hundertmal besser als die blöden winApi-Funktionen und solange man damit auskommt (was ja bei ihm der Fall sein sollte), sollte man sie auch der Beqeumlichkeit halber benutzen.
Verfasst: 22. Juli 2005 13:19
von macman
Christian81 hat geschrieben:HKEY_LOCAL_MACHINE geht mittels QSettings::Scope = QSettings::SystemScope
Bist Du dir da sicher? So wie ich die Doku verstanden habe ist UserScope für HKEY_CURRENT_USER und SystemScope für HKEY_USER. Da war nichts für HKEY_LOCAL_MACHINE. Ich hab mich nicht weiter damit befasst, da ich nicht an alles ran kam.
Christian81 hat geschrieben:QSettings ist hundertmal besser als die blöden winApi-Funktionen und solange man damit auskommt (was ja bei ihm der Fall sein sollte), sollte man sie auch der Beqeumlichkeit halber benutzen.
Ich will keine Lanze für Mickeysoft brechen, ganz bestimmt nicht, aber man braucht 3 Funktionen um an jeden Wert zu kommen. RegOpenKey, RegQueryValue und RegCloseKey. Einfacher geht es mit QSettings auch nicht.
Verfasst: 22. Juli 2005 13:24
von Christian81
Nein, es ist HKCU und HKLM (siehe z.B. src/corlib/io/qsettings.cpp:390++), ausserdem hätte ich es sonst in qt3/free falsch gemacht

. Und mit Qt geht es einfacher da man sich nicht um die zig Parameter kümmern muss die Reg(*)KeyEx(A|W) benötigen - schau dir mal die qsettings_win.cpp mal an.
Verfasst: 22. Juli 2005 13:38
von macman
Hab geschaut, Du hast recht. Dafür gibt es keine Möglichkeit an HKEY_USER zu kommen. Im Endeffekt bleibe ich bei meiner bisherigen Vorgehensweise, bevor ich jetzt anfange das zu mischen. Ich benutze zwar auch QSettings um meine Programmeinstellungen zu sichern, aber die kommen nicht in die Registry. Da gehören sie IMHO nicht hin.
Verfasst: 22. Juli 2005 15:36
von BartSimpson
Habe gemal mal in die Doku geschaut. Dort word was dies so geschriebe.:
Code: Alles auswählen
QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft",
QSettings::NativeFormat);
Mal schauen, wie weit man damit kommt:)
Verfasst: 22. Juli 2005 20:57
von BartSimpson
Das geht Prima:)
in meinem Fall benötige ich es um die Platform und die Windowsversion zu lesen.
Verfasst: 22. Juli 2005 21:02
von Christian81
BartSimpson hat geschrieben:Das geht Prima:)
in meinem Fall benötige ich es um die Platform und die Windowsversion zu lesen.
Platform und Windows-Version?
Reicht Dir da nicht
QSysInfo (Qt4) bzw. 'static WindowsVersion winVersion()' (Qt3, win only)?
Verfasst: 22. Juli 2005 21:41
von BartSimpson
Danke für den Tipp. Das spart etwas Code. Aber ich braucht auch die Version des Servicepacks:(
Verfasst: 22. Juli 2005 22:51
von Christian81
Da kann ich leider nicht mit Qt-Mitteln dienen

Verfasst: 22. Juli 2005 22:58
von BartSimpson
Doch das geht prima, man mus nur den richtigen eintrag in der Reg finden:)
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion
wenn CSDVersion fehlt, denn kein SP
sonst finden man dort den Namen