
AppData 直下の Local, LocalLow, Roaming フォルダの違い
AppData 直下の Local, LocalLow, Roaming フォルダの違い
Windows の AppData フォルダ直下には Local, LocalLow, Roaming の3つのフォルダがある。
それぞれの違いは何だろうか?
用途
Local と LocalLow フォルダには個人設定(ローカル設定)が保存される。
WindowsXP では %USERPROFILE%\Local Settings
だった。
Roaming フォルダにはアプリケーションデータが保存される。
WindowsXP では %USERPROFILE%\Application Data
だった。
考え方
- Roaming
-
ユーザーとともに別のコンピューターに移動できるもの。
- Local, LocalLow
-
ファイルサイズが大きく、ユーザーとともに移動するには負担が大きいファイルが使用する場所。
Local, LocalLow はアクセスするプロセスの信頼度の差によって使い分けられる。
相対的に危険度が高いプロセスが LocalLow を使うことになっている。
付録 - 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 フォルダは定義されていない。
したがって取得にはひと手間かける必要がある。
たとえば Local のパスに “Low” を連結する。
あるいは Roaming のパスを取得してから LocalLow に置換する。
安全そうなのは前者の “Low” を連結する方かと。
置換する方法は、意図しない箇所に Roaming が入っていた場合、その場所まで LocalLow になってしまう。
まー、ほぼあり得ないと思うが……。
var path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData)
.Replace("Roaming", "LocalLow");
// → C:\Users\username\AppData\LocalLow
var path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData) + "Low";
// → C:\Users\username\AppData\LocalLow
参考ページ
アカウントを作成 して、もっと沢山の記事を読みませんか?
この記事にコメントをしてみませんか?