|
.NET TIPS
Windowsのシステム・フォルダのパスを取得するには?
デジタルアドバンテージ
2003/05/30 |
 |
|
Windowsでは、「Program Files」や「デスクトップ」、「スタート メニュー」など、システムで固定の名前を持つ特別な「システム・フォルダ」が存在する。アプリケーションによっては、このようなシステム・フォルダにあるファイルを読み込んだり、設定ファイルやショートカットを作成したい場合があるが、システム・フォルダの位置はWindowsをインストールしたドライブや、Windowsでの設定によりマシンごとに異なる。そのため.NET Frameworkのクラス・ライブラリでは、システム・フォルダの絶対パスを取得するクラスが用意されている。
システム・フォルダへのパスを取得するには、Environmentクラス(System名前空間)のGetFolderPathメソッドを使用する。例えば次のコードは、一般的なアプリケーションをインストールするための「Program Files」ディレクトリのパスを取得する(CドライブにWindowsをインストールしている場合には、これは通常「C:\Program Files」となる)。
string p = Environment.GetFolderPath(
Environment.SpecialFolder.ProgramFiles);
GetFolderPathメソッドのパラメータには、Environment.SpecialFolder列挙体(System名前空間)の値を1つ指定する。列挙体の名前に「.」が含まれているのは、この列挙体がEnvironmentクラスの中で定義されているためだ(このような型は「入れ子になった型:Nested Type」と呼ばれる)。これは、この列挙体がEnvironmentクラスのメソッドでしか使用されないことを示唆している。
次のサンプル・プログラムは、「TIPS:列挙体の値を列挙するには?」で示した方法により、Environment.SpecialFolder列挙体のすべての値と、それをパラメータに指定してGetFolderPathメソッドを呼び出した場合に返される文字列を順に表示する。
// spfolder.cs
using System;
using SPFolder = System.Environment.SpecialFolder;
class EnumSpecialFolder {
public static void Main() {
foreach (SPFolder sp
in Enum.GetValues(typeof(SPFolder))) {
Console.WriteLine("{0}, {1}",
sp, Environment.GetFolderPath(sp));
}
}
}
// コンパイル方法:csc spfolder.cs
|
|
システム・フォルダの絶対パスを一覧表示するC#のサンプル・プログラム(spfolder.cs) |
|
なお、このサンプル・プログラムでは「Environment.SpecialFolder」と何度も記述するとプログラムが読みにくくなるため、usingディレクティブにより列挙体に「SPFolder」という別名を付けて記述している。using(Visual Basic .NETでは「Imports」)は、「using System;」のように名前空間をインポートするのによく使用されるが、このようにクラスや列挙体に別名を付ける(エイリアスを作成する)機能も持っている。
上記のサンプル・プログラムを筆者のPC(ユーザー名は「taka-e」)で実行した結果は次のようになった。プログラムの出力はそのままでは読みづらいので、ここでは表にまとめている。
列挙体の値 |
取得される文字列(例) |
Desktop |
C:\Documents and Settings\taka-e\デスクトップ |
Programs |
C:\Documents and Settings\taka-e\スタート メニュー\プログラム |
Personal |
C:\Documents and Settings\taka-e\My Documents |
Favorites |
C:\Documents and Settings\taka-e\Favorites |
Startup |
C:\Documents and Settings\taka-e\スタート メニュー\プログラム\スタートアップ |
Recent |
C:\Documents and Settings\taka-e\Recent |
SendTo |
C:\Documents and Settings\taka-e\SendTo |
MyMusic |
C:\Documents and Settings\taka-e\My Documents\My Music |
StartMenu |
C:\Documents and Settings\taka-e\スタート メニュー |
MyComputer |
(値なし) |
DesktopDirectory |
C:\Documents and Settings\taka-e\デスクトップ |
Templates |
C:\Documents and Settings\taka-e\Templates |
ApplicationData |
C:\Documents and Settings\taka-e\Application Data |
LocalApplicationData |
C:\Documents and Settings\taka-e\Local Settings\Application Data |
InternetCache |
C:\Documents and Settings\taka-e\Local Settings\Temporary Internet Files |
Cookies |
C:\Documents and Settings\taka-e\Cookies |
History |
C:\Documents and Settings\taka-e\Local Settings\History |
CommonApplicationData |
C:\Documents and Settings\All Users\Application Data |
System |
C:\WINDOWS\System32 |
ProgramFiles |
C:\Program Files |
MyPictures |
C:\Documents and Settings\taka-e\My Documents\My Pictures |
CommonProgramFiles |
C:\Program Files\Common Files |
 |
サンプル・プログラムの実行結果 |
なお、列挙体の各値についての詳細は、リファレンス・マニュアルのEnvironment.SpecialFolder列挙体の項目に記述されている。
カテゴリ:クラス・ライブラリ 処理対象:Windows環境
使用キーワード:usingディレクティブ
使用ライブラリ:Environmentクラス(System名前空間)
関連TIPS:列挙体の値を列挙するには? |
|
generated by
|
|
更新履歴 |
【2003/08/19】 本ページ内の表「サンプル・プログラムの実行結果」にDesktop、MyMusic、MyComputer、MyPicturesの項目が抜けていました。お詫びして訂正させていただきます。 |
|
Insider.NET 記事ランキング
本日
月間