特殊フォルダを取得する

 ふと気づ来ましたが、ディレクトリとフォルダの言葉をごっちゃで使っているので整理すると、ディレクトリは実際にドライブのどこに保存してあるかデータの住所を表しているのに対して、フォルダはWindowsが管理している仮想空間のどこにデータがあるかを示します。
 例えば、デスクトップ上にあるマイドキュメントは実際にデスクトップディレクトリの中にマイドキュメントディレクトリがあるわけではないですよね。
 そんな仮想空間で存在するフォルダは実際にはどのディレクトリにアクセスしているか調べる方法を説明します。

 Environment.SpecialFolder列挙体

 名前空間Systemの中にあるEnivormentクラスのSpecialFolder列挙定数として特殊フォルダの情報は記録されています。特殊フォルダの種類は次のものがあります。

メンバー名 説明
ApplicationData 現在のローミングユーザーのアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。ローミングユーザーは、ネットワーク上の複数のコンピューターで作業します。

ローミングユーザーのプロファイルはネットワーク上のサーバーで保持され、ユーザーがログオンするとシステムに読み込まれます。
CommonApplicationData すべてのユーザーが使用するアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。
LocalApplicationData 現在の非ローミングユーザーが使用するアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。
Cookies インターネットCookieの共通リポジトリとして機能するディレクトリ。
Desktop 物理的なファイルシステム上の場所ではない論理的なデスクトップ。
Favorites ユーザーのお気に入り項目の共通リポジトリとして機能するディレクトリ。
History インターネットの履歴項目の共通リポジトリとして機能するディレクトリ。
InternetCache 一時インターネットファイルの共通リポジトリとして機能するディレクトリ。
Programs ユーザーのプログラムグループを格納するディレクトリ。
MyComputer マイ コンピューターフォルダー。

メモ)マイコンピューターフォルダーに対するパスが定義されていないので、MyComputer定数は、常に空の文字列("")を生成します。
MyMusic "マイ ミュージック"フォルダー。
MyPictures "マイ ピクチャ"フォルダー。
Recent ユーザーが最近使用したドキュメントを格納するディレクトリ。
SendTo [送る]メニュー項目を格納するディレクトリ。
StartMenu [スタート]メニュー項目を格納するディレクトリ。
Startup ユーザーの[スタートアップ]プログラムグループに対応するディレクトリ。

ユーザーがWindowsNT 以降のバージョンのWindowsにログオンするか、それを起動するか、またはWindows98を起動すると、これらのプログラムが起動されます。
System Systemディレクトリ。
Templates ドキュメントテンプレートの共通リポジトリとして機能するディレクトリ。
DesktopDirectory デスクトップ上のファイルオブジェクトを物理的に格納するために使用されるディレクトリ。

仮想フォルダーであるデスクトップフォルダー自体とこのディレクトリフォルダーを混同しないようにしてください。
Personal ドキュメントの共通リポジトリとして機能するディレクトリ。

このメンバーはMyDocumentsに対応しています。
MyDocuments "マイ ドキュメント"フォルダー。

このメンバーはPersonalに対応しています。
ProgramFiles プログラムファイルディレクトリ。
CommonProgramFiles アプリケーション間で共有されるコンポーネント用のディレクトリ。
AdminTools 個々のユーザーの管理ツールを格納するために使用されるファイルシステムディレクトリ。Microsoft管理コンソール(MMC:Microsoft Management Console)は、カスタマイズされたコンソールをこのディレクトリに保存します。このディレクトリは、ユーザーと共に移動します。
CDBurning CDへの書き込みを待機しているファイルのステージング領域として機能するファイルシステムディレクトリ。
CommonAdminTools コンピューターのすべてのユーザーの管理ツールを格納するファイルシステムディレクトリ。
CommonDocuments すべてのユーザーに共通のドキュメントを格納するファイルシステムディレクトリ。この特別なフォルダーは、Shfolder.dllがインストールされているWindowsNTシステム、Windows95システム、およびWindows98システムで有効です。
CommonMusic すべてのユーザーに共通のミュージックファイルを格納するリポジトリの役割をするファイルシステムディレクトリ。
CommonOemLinks WindowsVistaでは、この値は下位互換性のために認識されますが、特別なフォルダー自体は使用されなくなりました。
CommonPictures すべてのユーザーに共通のイメージファイルを格納するリポジトリの役割をするファイルシステムディレクトリ。
CommonStartMenu すべてのユーザーの[スタート]メニューに表示されるプログラムおよびフォルダーを格納するファイルシステムディレクトリ。この特別なフォルダーは、WindowsNTシステムでのみ有効です。
CommonPrograms アプリケーション間で共有されるコンポーネントを格納するフォルダー。この特別なフォルダーは、WindowsNT、Windows2000、およびWindowsXPの各システムでのみ有効です。
CommonStartup すべてのユーザーの[スタートアップ]フォルダーに表示されるプログラムを格納するファイルシステムディレクトリ。この特別なフォルダーは、WindowsNTシステムでのみ有効です。
CommonDesktopDirectory すべてのユーザーのデスクトップに表示されるファイルおよびフォルダーを格納するファイルシステムディレクトリ。この特別なフォルダーは、WindowsNTシステムでのみ有効です。
CommonTemplates すべてのユーザーが使用できるテンプレートを格納するファイルシステムディレクトリ。この特別なフォルダーは、WindowsNTシステムでのみ有効です。
CommonVideos すべてのユーザーに共通のビデオファイルを格納するリポジトリの役割をするファイルシステムディレクトリ。
Fonts フォントが含まれる仮想フォルダー。
MyVideos ユーザーが所有しているビデオを格納するリポジトリの役割をするファイルシステムディレクトリ。
NetworkShortcuts "マイ ネットワーク"仮想フォルダーに表示できるリンクオブジェクトを格納するファイルシステムディレクトリ。
PrinterShortcuts "プリンター"仮想フォルダーに表示できるリンクオブジェクトを格納するファイルシステムディレクトリ。
UserProfile ユーザーのプロファイルフォルダー。アプリケーションでは、この階層にファイルやフォルダーを作成しないでください。アプリケーションのデータは、ApplicationDataで参照される場所に配置する必要があります。
CommonProgramFilesX86 Program Filesフォルダー。
ProgramFilesX86 Program Filesフォルダー。
Resources リソースデータを格納するファイルシステムディレクトリ。
LocalizedResources ローカライズされたリソースデータを格納するファイルシステムディレクトリ。
SystemX86 Windowsのシステムフォルダー。
Windows WindowsディレクトリまたはSYSROOT。これは、%windir%環境変数または%SYSTEMROOT%環境変数に対応します。

 これらの列挙体は、System.Environment.GetFolderPathメゾットを使って取得できます。GetFolderPathメソットを使用して、Windowsディレクトリを取得する方法は次の通りです。

import System
from System.Environment import SpecialFolder, GetFolderPath

winpath = GetFolderPath(SpecialFolder.Windows)
print "Windowsディレクトリは "+winpath+" です。"

raw_input()

出力画面
 Windowsディレクトリは C:\WINDOWS です。