Wo sollte ich die store-Anwendung bestimmte Einstellungen?
Ich wurde gebeten, zu aktualisieren, ein VB6-Anwendung, die läuft auf WinXP für die letzten 6 Jahre. Der Kunde möchte Windows 7 verwenden. Bis jetzt ist der app gespeichert werden die Einstellungen in einer INI-Datei im Anwendungsverzeichnis befindet. Ein wesentlicher Unterschied zwischen XP und 7 ist, dass Sie nicht schreiben können, um C:\Program Files\AppFolder
mehr.
Ich versuche herauszufinden, wo auf dem Dateisystem sollte ich Einstellungen speichern? Da die Anwendung weiterhin erforderlich, um laufen auf WinXP, ich bin irgendwie verwirrt.
Unter WinXP, ich habe Folgendes:
C:\Documents and Settings\profilename\Application Data
C:\Documents and Settings\profilename\Local Settings\Application Data
Auf Windows 7, ich habe Folgendes:
C:\Users\profilename\AppData\Local
C:\Users\profilename\AppData\LocalLow
C:\Users\profilename\AppData\Roaming
Jeden dieser Ordner Unterordner haben, die scheinen, um die Einstellungen zu speichern/Dateien für verschiedene Produkte
Also 2 Fragen:
- Gegeben, alle diese Ordner, wo Speichere ich meine Einstellungen?
- Ich gehe davon aus, dass es eine nette Windows-API-Aufruf, der mir geben würde, den richtigen Speicherort dieses Ordners. Und ich hoffe, es funktioniert sowohl auf XP und 7. Ist meine Annahme richtig? Wenn ja, ein link wäre sehr geschätzt werden.
- +1 Aber versuchen Sie nicht, zu denken, dass es einen wesentlichen Unterschied. Sie sollte wohl nicht geschrieben habe, um die gemeinsame "Program Files" Ordner auch auf pre-Vista-Windows-Versionen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine Reihe von speziellen Ordner, die Sie verwenden können, auf XP/Vista/Windows 7:
CSIDL_APPDATA
Ordner ist die, die Sie wahrscheinlich am meisten interessiert. Daten, die hier gespeichert ist, verfügbar zu roaming-Benutzer an welchem Rechner Sie sich anmelden. Dies ist der beste Ort zum speichern von einfachen Konfigurations-Daten. Alle Benutzer haben Schreibzugriff auf dieses (und das Letzte) Ordner. Beachten Sie, dass keines der oben genannten Ordner werden für die Benutzer-generierten Daten! Das wäre richtig gehören unter eigene Dateien-Hierarchie.CSIDL_LOCAL_APPDATA
für die Anwendung Daten immer lokal auf dem aktuellen Rechner installiert werden, sondern wird beiseite auf einer pro-Benutzer-basis. Die Daten in diesem Ordner ist nicht verfügbar auf roaming-basis, so sollte es sein, Daten, die der Benutzer wahrscheinlich nicht verpassen, wenn Sie sich anmelden, um eine andere Maschine.Ich schamlos kopiert die obige Erklärung aus einem guter Artikel von Karl Peterson, erklären das für VB6-Programmierer. Karl hat auch einen ready-to-use-Klasse, die helfen, finden Sie die Verzeichnisse, aber IMHO ist er kompliziert die Dinge dieser Zeit. Bob Riemersma hat einen besseren Weg in einer Zeile, mit der Shell-Objekt, als unten. BEARBEITEN Bob ' s Kommentar unten erklärt, warum es ist am besten, um die späte Bindung für diese eher als die frühe Bindung.
Meiner Meinung nach ist es gut zu weiterhin verwenden die INI-Dateien in diese Verzeichnisse.
CSIDL_APPDATA
ist der Ordner, sollten Sie wahrscheinlich verwenden werden. Jedoch, für Einstellungen, sollte kein Roaming der Benutzer, ziehen Sie die VerwendungCSIDL_LOCAL_APPDATA
.Finden Sie unter der Frage "Microsoft eine best practices-Dokument für die Speicherung von app-Daten?" für die hilfreiche info.
Vielleicht haben Sie einfach speichern Sie Ihre Einstellungen in der Windows-Registry?
Das ist sehr einfach. Mit SaveSeting und GetSetting ist viel einfacher als das erstellen der INI-Datei.
Und es gibt keine Probleme in der Kompatibilität, von WinNT auf Windows 8.