Universeller Ansatz zur Speicherung von INI-Typ-Einstellungen und / oder DB-Dateien auf verschiedenen Windows-Rechnern

StackOverflow https://stackoverflow.com/questions/691979

Frage

OK, echtes Bekenntnis zuerst: Vielleicht ist es nur mich, aber manchmal „Best Practices für die Programmeinstellungen“ auf Windows-Rechnern fühlt sich an wie es mehr als Microsofts Datenzugriffsstrategien verändert hat. Ich laufe noch XP und irgendwo auf dem Weg nur eine Art „glasig“ darüber, wo MS wollte, dass ich all meiner App-Daten speichern, usw. ich alle Maschinen kontrolliert ich codiert, so dass es wirklich keine Rolle spielte.

Jetzt Apps für „in the wild“ Ich schreibe auf bis Win98SE unterstützen. Ich muss darauf achten, alle schon wieder. : - \

Aus Gründen meist mit einfacher Migration auf neue Computer zu tun haben, ich bin kein großer Fan von der Registrierung für App-Einstellungen verwenden - ich ziehe INI-Dateien verwenden, und habe einige älteren INI-Komponenten, die ich für die Aufgabe verwenden (Raize, in der Regel). Ich bin offen für Vorschläge zu anderen Komponenten von Drittanbietern, wenn sie werden dies einfacher / weniger Ärger machen.

Im Grunde muss ich App-Einstellungen speichern (wie Optionseinstellungen erinnern, etc).

Ich habe gelesen: Registry vs. INI-Datei für Einstellungen vom Benutzer konfigurierbare Anwendung speichern
Wo Programmeinstellungen statt HKEY_LOCAL_MACHINE speichern?
Wo soll mein win32 Programm halten seine Dateien?
Der beste Ort zu speichern, Konfigurationsdateien und Protokolldateien unter Windows für mein Programm?

... so zumindest ich bin nicht allein in dieser Frage ...; )
(W / Entschuldigungen für das, was ist so etwas wie eine Wiederholung Frage, wenn auch aus einem etwas anderen Blickwinkel).

Es klingt wie ich gerade% APPDATA% / MyProgram verwenden kann, und speichern Sie alle Daten dort, ABER ist diese allgemein gültig für alle Windows-Varianten von Win98 auf bis? Wenn nicht, was ist der beste Ansatz, und wenn kam dieser Ansatz in der Existenz?

Was ich wirklich suchen, ehrlich gesagt, ist der einfachste Weg, dieses Problem weg zu machen gehen - ich will nur ein (wenn möglich), einfach, einfach, zuverlässig Weg „My Program Data Folder“ in jeder greifen und alle Instanzen. Wird die oben das erreichen?

War es hilfreich?

Lösung

Gehen Sie zu machen Delphi Programme Vista-Ready und blättern bis auf den Boden für:

„Wo Ihre Anwendungsdaten speichern“
  

Funktion GetRoamingUserAppDataPath: string;   // funktioniert so lange, wie Menschen mindestens IE 4. (und Win95 oder besser) haben

Andere Tipps

% APPDATA% scheint nicht vorhanden auf Win95 zu sein. Ich würde verwenden SHGetSpecialFolderPath , die auf Win98 verfügbar oder Win95 w / IE4.

Die Antworten, die Sie so weit gekommen sind gut, denke ich aber, dass man die Dinge in Ihrer Frage vermischt, die nicht zusammengehören, so ist es nicht möglich, ganz auf Ihre Frage zu beantworten.

Ihre Frage Titel Staaten

  

INI-Typ-Einstellungen und / oder DB-Dateien

und diese können zwei ganz verschiedene Dinge sein. Sie müssen zwischen Dateien unterscheiden, die pro-Benutzer sind, Dateien, die für alle Benutzer gemeinsam sind aber schreibgeschützt und gemeinsame Dateien, die jeder Benutzer sollte mit der Lage sein, zu arbeiten.

Die erste Kategorie ist einfach, verwenden Sie ein geeignetes Verzeichnis unter einer der CSIDL_APPDATA oder CSIDL_PERSONAL Ordner.

Die zweite Kategorie ist auch einfach, Dateien müssen nur durch das Setup-Programm an der richtigen Stelle installiert werden, die mit entsprechenden Berechtigungen ausgeführt werden müssen, da Standard (haftungsbeschränkt) Benutzer nicht in der Lage sein, an die richtigen Stellen zu schreiben.

Die letzte Kategorie ist jedoch schwierig, weil es einfach kein Verzeichnis in allen Windows-Installationen ist, die als beschreibbar für alle Benutzer davon ausgegangen werden kann. Vor allem im Geschäft Einstellungen mit Locked-Down Benutzerkonten kann es sein, dass der Benutzer keine Schreibrechte für die lokale Scheibe überhaupt, nur zu ihrem Benutzerverzeichnis irgendwo auf einem Server im Netzwerk. So gibt es keine einzige einfache Art und Weise, dass die Datenstelle für das Programm zu greifen und sicher sein, es wird funktionieren -. Es ist etwas, das Sie möglicherweise für alle Programme zu überdenken müssen und alle Anwendungsfälle neu

Für Bonuspunkte sollten Sie auch immer prüfen, ob die Dateien in das Roaming-Profil gehen und auf allen Maschinen in einer Domäne zur Verfügung stehen, oder ob sie sind maschinenspezifisch.

Ein Tipp, den ich geben würde, ist weg von Desktop-Stil-Datenbank-Dateien wie Paradox oder Access-Dateien für Anwendungen zu bewegen, die Daten zwischen Benutzern teilen auf einer Maschine benötigen. Nur mit echtem (lokalem) Datenbank-Server können Sie Multi-User-Daten haben, auf Locked-Down-Konten / Maschinen.

kann ich nicht kommentieren, ob es sich bei allen Versionen funktioniert, aber ich sicherlich zustimmen, dass INI-Dateien die richtige Antwort sind. Wenn XP sagte die Registrierung verwenden Ich versuchte es - für ein Programm. In-house zeigte Einsatz, dass die Einstellungen von Maschine zu Maschine kopiert werden müssen - das nächste Update auf INI-Dateien war zurück

.

Ich denke, der ganze Registry-Bit eine Anti-Piraterie-Maßnahme von mir ist, dass sie verbergen als Best Practice wollten.

Ich neige dazu, XML-Dateien in% APPDATA% zu verwenden, um meine Einstellungen zu halten. Nur wirklich, weil xml ist einfacher, als ini ist für C #. Unabhängig davon,% APPDATA% eine sichere Wette scheint.

Ich kann nicht raten, ob 98SE unterstützt dies.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top