[.NET] SpecialFolderの一覧を取得する

期限付きCookieの置き場所をプログラムで使用するときにはEnvironment.SpecialFolderというenum型を使い、Environment.GetFolderPathに与えることでパスの文字列を得るのが一般的。

enumとして何が定義されているのかは
Environment.SpecialFolder Enumeration
http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx
にある。

設定をリストアップするプログラムを作ってみた。元は、PetzoldのApplication = Code + Markupにあったもの。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace environmenttest1
{
    class Program
    {
        static void Main(string[] args)
        {
            Environment.SpecialFolder[] folders =
                (Environment.SpecialFolder[]) Enum.GetValues(typeof(Environment.SpecialFolder));

            foreach (Environment.SpecialFolder folder in folders)
            {
                Console.WriteLine("{0}: {1}", folder, Environment.GetFolderPath(folder));
            }
            Console.ReadLine();
        }
    }
}

自分のWindows 7で実行すると以下のようになった。

Desktop: C:\Users\username\Desktop
Programs: C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
Personal: C:\Users\username\Documents
Personal: C:\Users\username\Documents
Favorites: C:\Users\username\Favorites
Startup: C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Recent: C:\Users\username\AppData\Roaming\Microsoft\Windows\Recent
SendTo: C:\Users\username\AppData\Roaming\Microsoft\Windows\SendTo
StartMenu: C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu
MyMusic: C:\Users\username\Music
DesktopDirectory: C:\Users\username\Desktop
MyComputer:
Templates: C:\Users\username\AppData\Roaming\Microsoft\Windows\Templates
ApplicationData: C:\Users\username\AppData\Roaming
LocalApplicationData: C:\Users\username\AppData\Local
InternetCache: C:\Users\username\AppData\Local\Microsoft\Windows\Temporary Internet Files
Cookies: C:\Users\username\AppData\Roaming\Microsoft\Windows\Cookies
History: C:\Users\username\AppData\Local\Microsoft\Windows\History
CommonApplicationData: C:\ProgramData
System: C:\Windows\system32
ProgramFiles: C:\Program Files
MyPictures: C:\Users\username\Pictures
CommonProgramFiles: C:\Program Files\Common Files

Personalが2回出力されているのはMyDocumentとPersonalが同じ値だから。
MyComputerのPathがないことにも注意が必要かも。

Environment.SpecialFolder.Cookiesで取得できるフォルダのサブフォルダ Lowの下にも多くのCookieが格納される。このPathを作る場合には、Path.Combine()を使うのがお勧めだとPetzoldの本(フリーで配布されているDotNetzero.pdf)にあった。文字列の連結処理だから技術的にはStringで扱えるものだが、バックスラッシュの処理など特有のルールで悩まなくてもいいから、というのが理由。

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。