私のシステムでは、%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);
私の質問は、アプリケーションがこれらの場所のどれにデータを保存するかです。
これらの場所のどれを使用するかのガイドラインはありますか?そして、間違った場所を選択した場合、私は自分自身を問題に開放したままにしますか?
Roaming
フォルダーは、移動プロファイルが有効になっている場合(ドメイン環境で)マシン間でコピーされます。マシン間で共有するアプリケーションデータに使用します。 ただし、そこに大きなファイルを保存しないでください-IT部門は、そうすることを好まないため、ファイルがコピーされるときにユーザーがログインおよびログアウトするのにかかる時間が長くなります。
Local
フォルダーはマシン間でコピーされません。マシン固有のアプリケーションデータに使用します。
LocalLow
フォルダーは、低特権タスク(Internet Explorerなど)に使用されます。心配する必要はないはずです。
ユーザーが特別に保存したファイルについては、Documents
フォルダーに(デフォルトで)配置する必要があります。
[〜#〜] msdn [〜#〜] によると、違いはLocalApplicationData
はローカルマシンにとどまり、ローミングしないということです... ApplicationData
はローミングしますたとえば、ユーザーが別のコンピューターからドメインにログオンすると、同期されます...
LocalLow
は、IEの「保護モード」で実行されているBHOなどの特定の状況を指します...
標準アプリケーションでは、常にApplicationData
を使用します。ユーザーとローミングしてはならないものにはLocalApplicationData
を使用します...
MSDNから- Environment.SpecialFolder列挙 :
ApplicationData-現在のローミングユーザーのアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。ローミングユーザーは、ネットワーク上の複数のコンピューターで作業します。移動ユーザーのプロファイルはネットワーク上のサーバーに保持され、ユーザーがログオンするとシステムにロードされます。
LocalApplicationData現在の非ローミングユーザーが使用するアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。
要するに、移動プロファイルにはApplicationData
を使用し、非移動プロファイルにはLocalApplicationData
を使用します。