In meiner Anwendung muss ich Einstellungen speichern, die "global" (d. H. Nicht benutzerspezifisch) an einem bekannten und vorhersagbaren Ort gespeichert sind.Speichern von 'globalen' Daten als Standardbenutzer?
Ich möchte die Anwendung von überall (als Standardbenutzer, kein Administrator) ausgeführt werden können, einschließlich mehrerer Kopien von verschiedenen Standorten und in der Lage sein, die gespeicherten Konfigurationsdateien zu lesen und zu schreiben.
Die Daten müssen Lese- und Schreibzugriff für ALLE Standardbenutzer haben, nicht nur einen.
, die mit im Auge, die vier Optionen hier zu beachten sind ungeeignet: http://msdn.microsoft.com/en-us/library/bb206295(VS.85).aspx#ID0E1BA
Also, was sind meine Alternativen?
Meine Anwendung ist in C++ und nur für Windows geschrieben. Ich muss Windows XP und höher unterstützen.
Danke.
EDIT:
Um zu klären, Rennbedingungen, verursacht durch mehrere Instanzen ignorieren. Diese Frage bezieht sich ausschließlich darauf, wo die Daten gespeichert werden. Ich kann nicht überall geeignet sehen, dass ist:
- Vorhersehbare (zB% APPDATA% \ Foo ist ein 'vorhersehbar' Weg, aber leider benutzerspezifisch)
- Global (zB% Programdata% \ Foo ist ein globaler Pfad aber leider nur das erstellen von Benutzern haben Schreibzugriff)
- Accessible (ein Standardbenutzer muss in der Lage sein, neue Dateien im angegebenen Verzeichnis zu erstellen, das für alle Benutzer des System gilt)
"Sie können das Installationsprogramm schreiben etwas in eine HKLM \ SOFTWARE \" Ich habe dies in weit verbreiteten Desktop-Anwendungen getan. Ich lasse dem Installer Standardbenutzerrechte geben, um auf diesen Schlüssel zu schreiben. –
@Jim: Ich erwähnte nicht, die ACL für einen HKLM-Unterschlüssel auf etwas zu setzen, das von Standardbenutzern schreibbar ist (was auch für ein Unterverzeichnis des Programmverzeichnisses getan werden könnte), weil ich denke, dass es allgemein als schlechte Praxis angesehen wird. Ich bin mir nicht sicher, ob ich dem zustimme. Ich dachte, es könnte auch ein Problem mit der Logo-Zertifizierung sein, obwohl ich nicht weiß, ob das korrekt ist oder nicht. –