2009-10-02 11 views
18

Beim Erstellen einer Anwendung, die auf viele Windows-Versionen ausgerichtet ist, wird empfohlen, zu bestimmen, wo anwendungsspezifische Daten gespeichert werden sollen. Im Einzelnen:Verfügt Microsoft über ein Best Practices-Dokument zum Speichern von App-Daten im Vergleich zu Benutzerdaten auf verschiedenen Windows-Plattformen?

  • Anwendungsspezifische Daten (zB App-Konfigurationsdaten)
  • benutzerspezifische Daten/Einstellungen

Ich weiß, auf Windows Vista zum Beispiel gibt es Umgebungsvariablen wie% APPDATA%, das könnte verwendet werden, aber was ist mit Windows 7, Windows XP, Windows 98.

Meine Hauptfrage ist, hat Microsoft eine Best Practices-Dokument für diese, umreißt die Dateisystem-Standorte für die verschiedenen Arten von Daten (App vs. Benutzer) und die Sicherheitsimplikationen t muss man beim Lesen/Schreiben an diesen Orten beachten?

Ich bin auch interessiert, wie dies betrifft nicht nur .NET-Anwendungen (wo ApplicationSettingsBase verwendet werden kann), sondern auch in nicht verwalteten C/C++ - Anwendungen.

Danke an Pax und Remus für die beiden tollen Antworten. Ich habe diesen Artikel als auch (speziell für XP) gefunden:

How to write a Windows XP Application that stores user and application data in the correct location by using Visual C++

Antwort

8

Es gibt eine gute Beschreibung here der verschiedenen CSIDL Werte und die Ordner sie sich beziehen (einschließlich einer Beschreibung, die hoffentlich Ihnen sagen sollte, was du musst wissen).

Es enthält auch Links zu den Funktionen, die Sie zum Abrufen dieser speziellen Ordnerpfade verwenden sollten.

Beachten Sie, dass ab Vista die Methode ein wenig geändert hat. Es verwendet jetzt KNOWNFOLDERID anstelle von CSIDL und die Funktionen haben sich ebenfalls geändert. Siehe here.

Sie können immer noch die älteren Funktionen (im Moment) verwenden, da ich glaube, dass sie jetzt nur Wrapper um die neuen sind. Irgendwann in der Zukunft könnte sich das ändern.

8

Diese werden normalerweise in der Windows Software Logo Program (link broken) beschrieben. Der Link bezieht sich auf das Windows 7-Logo-Anforderungsdokument, aber ähnliche Dokumente gibt es für XP, Windows 2003, Vista und Windows 2008. Im Abschnitt Technische Anforderungen finden Sie einige der gesuchten Informationen:

Alle Anwendungsdaten, die bei den Benutzern auf dem Computer geteilt müssen sollten muss innerhalb ProgramData

Alle Anwendungsdaten exklusiv an einen bestimmten Benutzer und nicht geteilt werden mit anderen Benutzern des Computers gespeichert werden in gespeichert werden Users\<username>\AppData

In "pro-Maschine" Installationen, Benutzer Daten müssen beim ersten Lauf und nicht während der Installation geschrieben werden. Dies ist , da kein korrekter Benutzer Standort zum Speichern von Daten zum Zeitpunkt der Installation vorhanden ist.

EDIT:

Windows-10-Benutzer, suchen die Certification requirements for Windows Desktop Apps (Section 10)