AppData 直下の「Local」「LocalLow」「Roaming」フォルダの違い

Windows の AppData フォルダ直下には「Local」「LocalLow」「Roaming」の3つのフォルダがある。

それぞれの違いは何だろうか?

Local/LocalLow と Roaming フォルダの用途

「Local」と「LocalLow」フォルダには、個人設定(ローカル設定)が保存される。
ファイルサイズが大きく、ユーザーとともに移動するには負担が大きいファイルが使用する。

Local と LocalLow はアクセスするプロセスの信頼度の差によって使い分けられる。
相対的に危険度の高いプロセスが LocalLow を使うことになっている。

これらのフォルダは WindowsXP では %USERPROFILE%\Local Settings だった。


「Roaming」フォルダにはアプリケーションデータが保存される。
ユーザーとともに別のコンピューターへ移動できるファイルが使用する。

WindowsXP では %USERPROFILE%\Application Data だった。

付録 - C# でそれぞれのフォルダを取得する方法

次のいずれかの方法で取得できる。

  • Environment.GetFolderPath メソッドを使う

  • 環境変数から取得する

Roaming フォルダの取得

GetFolderPath メソッドの引数に Environment.SpecialFolder.ApplicationData を指定する。

var path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);
// → C:\Users\username\AppData\Roaming

環境変数「APPDATA」から取得することもできる。

var path = System.Environment.GetEnvironmentVariable("APPDATA");
// → C:\Users\username\AppData\Roaming

Local フォルダの取得

GetFolderPath メソッドの引数に Environment.SpecialFolder.LocalApplicationData を指定する。

var path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
// → C:\Users\username\AppData\Local

環境変数「LOCALAPPDATA」から取得することもできる。

var path = System.Environment.GetEnvironmentVariable("LOCALAPPDATA");
// → C:\Users\username\AppData\Local

LocalLow フォルダの取得

Environment.SpecialFolder 列挙型には LocalLow フォルダを表すフィールドが存在しないため、GetFolderPath メソッドで直接取得することはできない。

また環境変数にも LocalLow フォルダは定義されていない。

したがって、LocalLow フォルダの取得にはひと手間かける必要がある。

たとえば Local のパスに "Low" を連結する。
あるいは Roaming のパスを取得してから Roaming の部分を LocalLow に置換する。

安全なのは前者の "Low" を連結する方法だろうか。
置換する方法は、意図しない部分に Roaming が入っていた場合、その部分まで LocalLow になってしまう。
まー、ほぼあり得ないと思うが。


"Low" を連結するサンプル

var path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData) + "Low";
// → C:\Users\username\AppData\LocalLow


"Roaming" を "LocalLow" に置換するサンプル

var path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData)
                             .Replace("Roaming", "LocalLow");
// → C:\Users\username\AppData\LocalLow


LocalLow フォルダを使う機会がそれほどあるか? というのもあるが、ひとまずこれで OK 。


参考ページ


この記事が気に入ったらサポートをしてみませんか?