いろいろな環境での SpecialFolder
参考: 特殊ディレクトリのパスを取得する - .NET Tips (VB.NET,C#...)
.net framework のみならず、mono で動かした場合に Environment.GetFolderPath(Environment.SpecialFolder) がどういったパス文字列を返してくるのかが気になった&情報が無いようなのでメモ。
特に mono については、環境次第で挙動が変わりうるので、参考までにどうぞ。
ハマったところ
当たり前ではあるが、ディレクトリによっては通常ユーザーでは書き込めないことがある点に注意。
例えば、root でない権限で走るコードにてうっかり CommonApplicationData を使ったりすると、パーミッション的に困ったことになる。
また、SpecialFolder.Personal と SpecialFolder.MyDocuments は同じ値*1になっているようだ。Enum.GetValues で列挙したら .Personal が二つ出てきて一瞬戸惑ってしまった。
使った環境と実装
- Windows XP: .net framework 3.5
- Mac OS X (10.5 英語設定): mono 2.0.1
- Ubuntu Linux (Hardy Heron 日本語版): mono 1.2.6
一覧
System.Environment.GetFolderPath(Environment.SpecialFolder) が返す文字列を、環境ごとに調べて一覧表にしてみた。なお、(ユーザー名) の部分には、プロセスを実行しているユーザーの名前(ログイン名)が入るはずである。
SpecialFolder. | Windows XP | Mac OS X | Ubuntu Linux |
---|---|---|---|
ApplicationData | C:\Documents and Settings\(ユーザー名)\Application Data | /Users/(ユーザー名)/.config | /home/(ユーザー名)/.config |
CommonApplicationData | C:\Documents and Settings\All Users\Application Data | /usr/share | /usr/share |
CommonProgramFiles | C:\Program Files\Common Files | ||
Cookies | C:\Documents and Settings\(ユーザー名)\Cookies | ||
DesktopDirectory | C:\Documents and Settings\(ユーザー名)\デスクトップ | /Users/(ユーザー名)/Desktop | /home/(ユーザー名)/デスクトップ |
Desktop | C:\Documents and Settings\(ユーザー名)\デスクトップ | /Users/(ユーザー名)/Desktop | /home/(ユーザー名)/デスクトップ |
Favorites | C:\Documents and Settings\(ユーザー名)\Favorites | ||
History | C:\Documents and Settings\(ユーザー名)\Local Settings\History | ||
Internet Files | |||
InternetCache | C:\Documents and Settings\(ユーザー名)\Local Settings\Temporary | ||
LocalApplicationData | C:\Documents and Settings\(ユーザー名)\Local Settings\Application Data | /Users/(ユーザー名)/.local/share | /home/(ユーザー名)/.local/share |
MyComputer | |||
MyDocuments*2 | C:\Documents and Settings\(ユーザー名)\My Documents | /Users/(ユーザー名) | /home/(ユーザー名) |
MyMusic | C:\Documents and Settings\(ユーザー名)\My Documents\My Music | /Users/(ユーザー名)/Music | /home/(ユーザー名) |
MyPictures | C:\Documents and Settings\(ユーザー名)\My Documents\My Pictures | /Users/(ユーザー名)/Pictures | /home/(ユーザー名) |
Personal*3 | C:\Documents and Settings\(ユーザー名)\My Documents | /Users/(ユーザー名) | /home/(ユーザー名) |
ProgramFiles | C:\Program Files | ||
Programs | C:\Documents and Settings\(ユーザー名)\スタート メニュー\プログラム | ||
Recent | C:\Documents and Settings\(ユーザー名)\Recent | ||
SendTo | C:\Documents and Settings\(ユーザー名)\SendTo | ||
StartMenu | C:\Documents and Settings\(ユーザー名)\スタート メニュー | ||
Startup | C:\Documents and Settings\(ユーザー名)\スタート メニュー\プログラム\スタートアップ | ||
System | C:\WINDOWS\system32 | ||
Templates | C:\Documents and Settings\(ユーザー名)\Templates |