2013-03-12 6 views
7

Zusammenfassung: Mehrere verschiedene Benutzer werden meine Anwendung auf einer bestimmten Maschine verwenden. Ich möchte, dass die Anwendung ihre Daten in einer einzigen gemeinsamen Datei auf diesem Computer speichert, unabhängig davon, welcher Benutzer die Anwendung ausführt.Verwenden Sie 'ApplicationData' oder 'LocalApplicationData', um eine Datei zu speichern, die allen Benutzern gemeinsam ist?

Um das zu erreichen, was ich will, ich frage mich, ob diese Frage relevant sein könnten: Difference between 'SpecialFolder.LocalApplicationData' and 'SpecialFolder.ApplicationData'?

Von dieser Frage und ihre Antworten geht hervor, dass:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

ist spezifisch für die Maschine. Einige der Informationen, die ich durch das Googlen gefunden habe, bestätigen dies. Ich habe jedoch auch Informationen gefunden, die besagt, dass LocalApplicationDatabenutzerspezifisch ist.

Also, was ist wahr? Und kann mir jemand sagen, was eigentlich "benutzerspezifisch" und "maschinenspezifisch" gemeint ist?

Hier ist, was ich denke: Wenn LocalApplicationData ist maschinenspezifisch, dann kann ich das als Grundlage für meine Anwendung alle seine Daten in einer gemeinsamen Datei für alle Benutzer speichern.

frage ich mich auch über die ApplicationData Ordner:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

Sollte ich stattdessen ApplicationData verwenden zu bekommen, was ich will?

+1

im Zweifelsfall [lesen Sie die Dokumentation] (http://msdn.microsoft.com/en-us/library/system.environment.specialfolder. aspx). CommonApplicationData. –

+1

@ RaymondChen warum ist das nicht eine Antwort, da es die Antwort ist? – pixelbadger

+1

Wahrscheinlich becau Es ist nicht die Antwort, c: \ programdata ist nicht beschreibbar. Die Standardinstallation von Windows bietet keinen Ordner, in den alle Benutzer schreiben können. Wenn dies wichtig ist, müssen Sie einen erstellen und Jedem Schreibzugriff gewähren. Sie werden wahrscheinlich später herausfinden, dass der Umgang mit einem Benutzer, der die Daten eines anderen Benutzers vermasselt und keine Sicherungskopie hat, ein ziemlicher Kopfschmerz sein kann. Deshalb existieren Dateiserver. –

Antwort

5

Sowohl ApplicationData als auch LocalApplicationData sind nur für den aktuell angemeldeten Benutzer zugänglich. Der Unterschied zwischen diesen beiden besteht darin, dass ApplicationData repliziert und mit anderen Geräten synchronisiert wird, die der Benutzer in einer Unternehmensumgebung verwendet. Es würde verwendet werden, um die Präferenzen eines Benutzers zu speichern.

Als Raymond vorgeschlagen (see docs), Sie gehen einen anderen Ordner verwenden möchten. CommonDocuments eine gute Option wäre für Dokumente zwischen allen Benutzern gemeinsam genutzt werden. CommonMusic wenn Sie Musik sind zu speichern und so weiter.

Wenn Sie wollen anwendungsspezifische speichern Dateien verwenden Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

+2

Um es kurz zu machen: Beide sind benutzerspezifisch und 'LocalApplicationData' ist auch maschinenspezifisch. – MicroVirus

Verwandte Themen