Speicherort QSettings

Verschiedenes zu Qt
Antworten
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Speicherort QSettings

Beitrag von Tilman Räger »

Hallo,

Kleines Problem auf einer Windows-Kiste:

Mein Programm speichert seine Einstellungen User-/Application-abhängig unter
HKEY_CURRENT_USER/Software/<Company>/<Application>/...

bei mir auf dem Rechner (VMWare, 32-Bit Windows7) funktioniert es auch - nur beim Kunden ist der Key nicht zu finden. Die Speicherung der Daten erfolgt problemlos, nur eben an unbekannter Stelle.

Gibt es unter Windows die Möglichkeit, solche Programmeinstellungen auszulagern (aufgrund einer Windows-Einstellung) oder hat sonst jemand eine Idee, wo die Daten verblieben sein könnten - momentan stochere ich noch arg im Nebel.

Im Voraus schon mal Danke für alle (ernstgemeinten) Antworten.

Gruss
Tilman (Räger)
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Speicherort QSettings

Beitrag von RHBaum »

In der Regestry mal nach den Namen der App suchen ?

Wenn er nix findet, kann es sein das er das system aus unbekannten Gründen nicht als windows system erkennt , dann speichert er das eigntlich als ini datei im userverzeichnis

was für ein "format" hasst QSettings mitgegeben bzw welchen Contructor verwendest du ?

das ist der relevante Abschnitt für dich aus der QSettings Doku:
Sei denn du hasst nen eigenen writer geschrieben ^^
Platform-Specific Notes
Locations Where Application Settings Are Stored

As mentioned in the Fallback Mechanism section, QSettings stores settings for an application in up to four locations, depending on whether the settings are user-specific or system-wide and whether the settings are application-specific or organization-wide. For simplicity, we're assuming the organization is called MySoft and the application is called Star Runner.

On Unix systems, if the file format is NativeFormat, the following files are used by default:

$HOME/.config/MySoft/Star Runner.conf (Qt for Embedded Linux: $HOME/Settings/MySoft/Star Runner.conf)
$HOME/.config/MySoft.conf (Qt for Embedded Linux: $HOME/Settings/MySoft.conf)
/etc/xdg/MySoft/Star Runner.conf
/etc/xdg/MySoft.conf

On Mac OS X versions 10.2 and 10.3, these files are used by default:

$HOME/Library/Preferences/com.MySoft.Star Runner.plist
$HOME/Library/Preferences/com.MySoft.plist
/Library/Preferences/com.MySoft.Star Runner.plist
/Library/Preferences/com.MySoft.plist

On Windows, NativeFormat settings are stored in the following registry paths:

HKEY_CURRENT_USER\Software\MySoft\Star Runner
HKEY_CURRENT_USER\Software\MySoft\OrganizationDefaults
HKEY_LOCAL_MACHINE\Software\MySoft\Star Runner
HKEY_LOCAL_MACHINE\Software\MySoft\OrganizationDefaults

Note: On Windows, for 32-bit programs running in WOW64 mode, settings are stored in the following registry path: HKEY_LOCAL_MACHINE\Software\WOW6432node.

On BlackBerry only a single file is used (see Platform Limitations). If the file format is NativeFormat, this is "Settings/MySoft/Star Runner.conf" in the application's home directory.

If the file format is IniFormat, the following files are used on Unix, OS X, and iOS:

$HOME/.config/MySoft/Star Runner.ini (Qt for Embedded Linux: $HOME/Settings/MySoft/Star Runner.ini)
$HOME/.config/MySoft.ini (Qt for Embedded Linux: $HOME/Settings/MySoft.ini)
/etc/xdg/MySoft/Star Runner.ini
/etc/xdg/MySoft.ini

On Windows, the following files are used:

%APPDATA%\MySoft\Star Runner.ini
%APPDATA%\MySoft.ini
%COMMON_APPDATA%\MySoft\Star Runner.ini
%COMMON_APPDATA%\MySoft.ini

The %APPDATA% path is usually C:\Documents and Settings\User Name\Application Data; the %COMMON_APPDATA% path is usually C:\Documents and Settings\All Users\Application Data.

On BlackBerry only a single file is used (see Platform Limitations). If the file format is IniFormat, this is "Settings/MySoft/Star Runner.ini" in the application's home directory.

The paths for the .ini and .conf files can be changed using setPath(). On Unix, OS X, and iOS the user can override them by setting the XDG_CONFIG_HOME environment variable; see setPath() for details.
Ciao ...
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: Speicherort QSettings

Beitrag von Tilman Räger »

Hallo,

Format ist Native-Format (Konstruktor QSettings::QSettings(Scope, const QString&, const QString&, QObject*))

Der Abschnitt aus der Doku ist mir bekannt. Die Frage ging eher dahin, ob man durch eine Windows-Einstellung die Auslagerung der entsprechenden Registry-Bestandteile veranlassen kann. Ansonsten fiele mir nur noch ein, das der Anwender (leider anscheinend nicht unbedingt ein Crack) die Anwendung unter einem anderen Account hat laufen lassen. Die Idee, nach dem Anwendungsnamen zu suchen hatte ich auch schon, allerdings bisher keine Reaktion vom Kunden.

Gruss
Tilman
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Speicherort QSettings

Beitrag von RHBaum »

Sorry wenn ich die doku noch mal gepostet, war ned sicher ob alles berücksichtigt hasst :-)
Deine Frage klang am Anfang etwas naiv ^^
Und im "einfach Qt" Forum rechnet man meistens mit weniger komplizierten Fragestellungen.

Ich denk mal das auch nen mehr auf den fachlichen Kontext bezogenes Forum da mehr Hilfe bieten kann.

Fakt ist,
Bei "native Format" und wenn Qt ein windows system erkennt (was schon beim kompilieren festgelegt wird), verwendet Qt die Winapi Registry funktionen.
Die Ablageorte sollten auch definiert sein.

Die registry funktionen werden glaub ich durch die Advapi dll zuur verfügung gestellt (systembiblio).
"Normal" ist da nix konfigurierbar, ist ne ziemliche low level api ...

die kann man naturlich faken, bzw injekten. so könnte man auch pfade anpassen, die DB's ändern etc. auch so das das ganze windows system nix mitbekommt.
Aber die Regestry tools von windows würden da auch betroffen sein, also wären die änderungen eher transparent ...
Und dann die Frage, wozu sollte man sowas tun ?
Glaub kaum das eine App/Tool sowas nutzen wöllte, wenn es nicht grad nen virus ist ....
Auch sollte ne Manipulation der Systemdlls den virenscanner aufm plan rufen, zumindest in meinem naiven Weltbild ^^

Also machbar sicher, aber wahrscheinlich eher nicht.
Ich denk mal das szenario mit dem anderen accout ist wahrscheinlicher ....

Ciao ...
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Re: Speicherort QSettings

Beitrag von MichaelS »

Moin,

zwei Möglichkeiten fallen mir dazu ein:

a) Der Kunde hat ein 64-Bit System, dann liegen die Einträge hier:

Code: Alles auswählen

HKEY_LOCAL_MACHINE\Software\WOW6432node
b) Der Kunde hat keine Administratorrechte. Dann werden die Zugriffe auf den Zweig HKEY_LOCAL_MACHINE\Software\ von Windows umgeleitet auf:

Code: Alles auswählen

HKEY_CURRENT_USER\Software\Classes\VirtualStore\Machine\Software
Gruß Michael
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: Speicherort QSettings

Beitrag von odt »

QSettings.filename() liefert den Filenamen respektive den Registry-Path.
ODT Informatik GmbH, Reto Tschofenig
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: Speicherort QSettings

Beitrag von Tilman Räger »

Hallo,
odt hat geschrieben:QSettings.filename() liefert den Filenamen respektive den Registry-Path.
das wäre vermutlich die beste Methode, solche Probleme für die Zukunft zu vermeiden -> rin ins Logfile und gut ist :-)

Administratorrechte kann ich nicht voraussetzen, daher speichere ich sowieso schon userabhängig, also HKEY_CURRENT_USER.

Ich vermutete irgendeine mir unbekannte Windows-Einstellung, die solche Registry-Einträge generell umleitet, weiß nicht, ob es so etwas gibt. Aber da selbst Microsoft inzwischen mitbekommen hat, das die Registry ein anfälliger Moloch ist und wieder auf Ini-Dateien setzt, könnte ich es mir durchaus vorstellen. Ansonsten stimmt vermutlich der Verdacht mit den 2 Accounts.

Gruss
Tilman (Räger)
Antworten