web-dev-qa-db-ja.com

WindowsXPとWindows Vistaで異なるアプリケーションSpecialFoldersが指すディレクトリ

つまり、私は持っています:

  • Environment.SpecialFolder.ApplicationData
  • Environment.SpecialFolder.CommonApplicationData
  • Environment.SpecialFolder.LocalApplicationData

Windows XPおよび/またはWindows Vistaでこれらのポイントが何であったかは不明です。

これまでに見つけたのは、ApplicationDataがXPの現在のユーザーのApplicationDataフォルダーとVistaのローミングアプリケーションデータフォルダーを指していることです。

また、どちらを使用するかについての一般的なガイドラインがあるかどうかも知りたいです。

26
Thorsten Lorenz

それに対する単一の答えはありません。実際、これは正確にwhyこれらの "SpecialFolder"が定義されています。ハードコードされたパスの代わりにそれらを使用します。

Environment.SpecialFolder.ApplicationDataが最も一般的なものです。このフォルダには、ユーザードキュメント以外の、ユーザーごとの一時的ではないアプリケーション固有のデータが保持されます。一般的な例は、設定または構成ファイルです。

Environment.SpecialFolder.CommonApplicationDataは似ていますが、ユーザー間で共有されます。たとえば、これを使用してドキュメントテンプレートを保存できます。

Environment.SpecialFolder.LocalApplicationDataは、ApplicationDataの非ローミング代替手段です。そのため、重要なデータをそこに保存することは決してありません。ただし、非ローミングであるため、一時ファイル、キャッシュなどの適切な場所です。通常はローカルディスク上にあります。

29
MSalters

確認は簡単です。 Use Environment.GetFolderPath(...);およびMessageBoxまたはConsole.Writeを使用すると、それが指している場所も表示されます。パスを表示するシンプルなアプリを作成し、Windows XPおよびWindows Vistaで実行するだけです。

using System;

namespace EnvironmentCheck
{
    class Program
    {
        static void Main(string[] args)
    {
        Console.Write(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\n");
        Console.Write(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)+ "\n");
        Console.Write(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+ "\n");
    }
}
}

Win 7 x64での私の結果

C:\ Users\myUsername\AppData\Roaming
C:\ ProgramData
C:\ Users\myUsername\AppData\Local

14
MadBoy

これらの特別なフォルダーがWindowsでどのように評価されるかを知りたい人のためにXPしかし、それを実行するXPを実行する必要はありません。 @MadBoyのコード:

アプリケーションデータ:

C:\Documents and Settings\YourAccountHere\Application Data

CommonApplicationData:

C:\Documents and Settings\All Users\Application Data

LocalApplicationData:

C:\Documents and Settings\YourAccountHere\Local Settings\Application Data
3
Oran Dennison