web-dev-qa-db-ja.com

「SpecialFolder.LocalApplicationData」と「SpecialFolder.ApplicationData」の違いは?

私のシステムでは、%AppData%C:\Users\<USER>\AppData\RoamingであるApplicationDataにつながります

しかし、C:\Users\<USER>\AppData\Localもあります
さらに混乱を招くD:\Users\<USER>\AppData\LocalLow

string local = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string roaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

私の質問は、アプリケーションがこれらの場所のどれにデータを保存するかです。

これらの場所のどれを使用するかのガイドラインはありますか?そして、間違った場所を選択した場合、私は自分自身を問題に開放したままにしますか?

39
Tarion

Roamingフォルダーは、移動プロファイルが有効になっている場合(ドメイン環境で)マシン間でコピーされます。マシン間で共有するアプリケーションデータに使用します。 ただし、そこに大きなファイルを保存しないでください-IT部門は、そうすることを好まないため、ファイルがコピーされるときにユーザーがログインおよびログアウトするのにかかる時間が長くなります。

Localフォルダーはマシン間でコピーされません。マシン固有のアプリケーションデータに使用します。

LocalLowフォルダーは、低特権タスク(Internet Explorerなど)に使用されます。心配する必要はないはずです。

ユーザーが特別に保存したファイルについては、Documentsフォルダーに(デフォルトで)配置する必要があります。

49
Roger Lipscombe

[〜#〜] msdn [〜#〜] によると、違いはLocalApplicationDataはローカルマシンにとどまり、ローミングしないということです... ApplicationDataはローミングしますたとえば、ユーザーが別のコンピューターからドメインにログオンすると、同期されます...

LocalLowは、IEの「保護モード」で実行されているBHOなどの特定の状況を指します...

標準アプリケーションでは、常にApplicationDataを使用します。ユーザーとローミングしてはならないものにはLocalApplicationDataを使用します...

9
Yahia

MSDNから- Environment.SpecialFolder列挙

ApplicationData-現在のローミングユーザーのアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。ローミングユーザーは、ネットワーク上の複数のコンピューターで作業します。移動ユーザーのプロファイルはネットワーク上のサーバーに保持され、ユーザーがログオンするとシステムにロードされます。

LocalApplicationData現在の非ローミングユーザーが使用するアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。

要するに、移動プロファイルにはApplicationDataを使用し、非移動プロファイルにはLocalApplicationDataを使用します。

4
Oded