C#でWindowsフォルダやSystemフォルダのパスを取得する

プログラムを作成していると、OSがインストールされているフォルダやその中にある特定のフォルダへアクセスしたい場合があります。

 

ほとんどの場合OSのインストールパスは「c:\Windows」だとは思いますが、パスを直接ソースに書くのは少し抵抗があるのではないでしょうか?

 

C#では、OS関連のパスを取得するメソッドが用意されています。

WindowsフォルダやSystemフォルダなどのパスが必要な場合はメソッドで取得しましょう。

 

System.Environment.GetFolderPathメソッド

System.Environment.GetFolderPathメソッドはOSに関連する様々なフォルダパスを取得する事が出来ます。

 

以下の例ではWindowsフォルダを取得しています。

//Windowsフォルダを取得
string windir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Windows);

取得できるパスの種類

System.Environment.GetFolderPathメソッドの第1引数に渡す識別子によって様々なパスを取得する事が出来ます。

代表的な識別子は以下の通りです。

識別子 概要 取得パス
Windows Windowsフォルダ C:\\WINDOWS
System Systemフォルダ C:\\WINDOWS\system32
SystemX86 Systemフォルダ(32ビット用) C:\WINDOWS\SysWOW64
Fonts フォントを格納するフォルダ C:\WINDOWS\Fonts
ProgramFiles プログラムファイルフォルダ C:\Program Files
ProgramFilesX86 プログラムファイルフォルダ(32ビット用) C:\Program Files (x86)
MyDocuments [マイ ドキュメント] フォルダ C:\Users\[ユーザー名]\Documents
MyMusic [マイ ミュージック] フォルダ C:\Users\[ユーザー名]\Music
MyPictures [マイ ピクチャ] フォルダ C:\Users\[ユーザー名]\Pictures
MyVideos ビデオを格納するフォルダ C:\Users\[ユーザー名]\Videos
Desktop デスクトップフォルダ C:\Users\[ユーザー名]\Desktop