コンピューターで現在利用可能なドライブの情報を取得する [C#]

PCの現在利用可能なドライブ(論理ドライブ)の情報を取得する方法について紹介します。
現在利用可能なドライブの一覧はSystem.IO名前空間のDirectoryクラスのGetLogicalDrives静的メソッドで取得することができます。また、System.IO名前空間のDriveInfoクラスのGetDrivesメソッドで取得することもできます。
DriveInfosクラスではドライブの様々な情報を取得することができます。

利用可能なドライブの一覧を取得する

DirectoryクラスのGetLogicalDrives静的メソッドでドライブの一覧を取得

DirectoryクラスのGetLogicalDrives静的メソッドの構文は次のようになります。

GetLogicalDrives静的メソッドの使用例

以下にGetLogicalDrives静的メソッドの使用例を示します。

実行結果例

C:\
D:\
E:\

DriveInfoクラスのGetDrives静的メソッドでドライブの一覧を取得

DriveInfoクラスのGetDrives静的メソッドの構文は次のようになります。

GetDrives静的メソッドの使用例

以下にGetLogicalDrives静的メソッドの使用例を示します。

実行結果例

C:\
D:\
E:\
F:\

ドライブ名を取得する

ドライブ名の取得にはDriveInfoクラスのNameプロパティを使用します。

DriveInfo.Nameプロパティの構文は次の通りです。

C:\、D:\などのドライブ名を取得します。

ボリュームラベルを取得・設定する

ボリュームラベルの取得または設定にはDriveInfoクラスのVolumeLabelプロパティを使用します。

DriveInfo.VolumeLabelプロパティの構文は次の通りです。

ドライブのボリュームラベルを取得または設定します。

VolumeLabelプロパティの使用例

VolumeLabelプロパティを使用してボリュームラベルを取得、設定する例を以下に示します。

上記の例では、取得できる全てのドライブを順に検査し、ボリュームラベルが設定されているかどうかをチェックしています。
ボリュームラベルが設定されていないドライブであれば、Cドライブならボリュームラベルを「Windows」に、Cドライブでなければボリュームラベルを「ドライブ文字+ボリューム」に設定しています。

ファイルシステムの名前を取得する

ファイルシステムの名前を取得するにはDriveInfoクラスのDriveFormatプロパティを使用します。

DriveInfo.DriveFormatプロパティの構文は次の通りです。

DriveInfo.DriveFormatプロパティでは、NTFS、FAT32などのファイルシステムの名前を取得できます。

ドライブの種類をを取得する

ドライブの種類をを取得するにはDriveInfoクラスのDriveTypeプロパティを使用します。

DriveInfo.DriveTypeプロパティの構文は次の通りです。

DriveTypeプロパティでは、CD-ROM、取り外し可能、ネットアーク、固定などのドライブの種類が取得できます。
DriveTypeプロパティはDriveType列挙型で取得できます。

DriveType 列挙型

列挙名 説明
Unknown 0 ドライブの種類が不明。
NoRootDirectory 1 ドライブにルートディレクトリがない。
Removable 2 ドライブがUSBフラッシュドライブなどのリムーバブルストレージデバイス。
Fixed 3 ドライブがHDD(ハードディスク)、SSD(ソリッドステートドライブ)などの固定ディスク。
Network 4 ドライブがネットワークドライブ。
CDRom 5 ドライブがCD-ROM、DVD-ROMなどの光ディスクドライブ。
Ram 6 ドライブがRAMディスク。

ストレージ領域の合計サイズを取得する

ストレージ領域の合計サイズを取得するにはDriveInfoクラスのTotalSizeプロパティを使用します。

DriveInfo.TotalSizeプロパティの構文は次の通りです。

TotalSizeプロパティはドライブのストレージ領域の合計サイズをバイト単位で返します。

使用できる空き領域を取得する

使用できる空き領域を取得する手段には、ドライブ全体の空き領域を取得するものと、現在のユーザーが利用可能な空き領域を取得するものの2種類があります。

使用できる空き領域の量の合計を取得する

使用できる空き領域の量の合計を取得するにはDriveInfoクラスのTotalFreeSpaceプロパティを使用します。

DriveInfo.TotalFreeSpaceプロパティの構文は次の通りです。

TotalFreeSpaceプロパティはドライブで使用できる空き領域の量の合計をバイト単位で返します。
ドライブ全体の空き容量を調べるのに使用します。

使用できる空き領域の量を取得する

使用できる空き領域の量を取得するにはDriveInfoクラスのAvailableFreeSpaceプロパティを使用します。

DriveInfo.AvailableFreeSpaceプロパティの構文は次の通りです。

AvailableFreeSpaceプロパティはドライブで使用できる空き領域の量をバイト単位で返します。
ドライブ全体のうち現在のユーザーが利用可能な空き容量を調べるのに使用します。
ディスク・クォータなどで利用できない領域がある場合は、その空き容量が除外されるためTotalFreeSpaceプロパティの数値とは一致しない場合があります。

ドライブの準備ができているかどうかをを取得する

ドライブの準備ができているかどうかをを取得するにはDriveInfoクラスのIsReadyプロパティを使用します。

DriveInfo.IsReadyプロパティの構文は次の通りです。

IsReadyプロパティはドライブの準備ができている場合はtrue。ドライブの準備ができていない場合はfalseを返します。

ルートディレクトリを取得する

ルートディレクトリを取得するにはDriveInfoクラスのRootDirectoryプロパティを使用します。

DriveInfo.RootDirectoryプロパティの構文は次の通りです。

DriveInfo.RootDirectoryプロパティはルートディレクトリの情報をDirectoryInfoオブジェクトとして返してくれます。

サンプルプログラム

Windowsフォームアプリケーションを作成して、ドライブの一覧を取得し、取得したドライブの詳細情報を取得、表示するサンプルプログラムの実装例を記載します。

ユーザーインターフェース

フォームのインターフェースは次のようにします。

ドライブ情報取得サンプルフォームデザイン

フォームの上部にドライブの一覧を表示するリストボックス(ListBox)を配置し、下部にドライブの詳細情報を表示するリストビュー(ListView)を配置します。

ソースコード

サンプルプログラムのフォームには次のようなソースコードを記述します。

フォームのロードイベントでリストビューの初期化とリストボックスへのドライブ一覧の設定を行います。
リストボックスの選択インデックス変更時のイベントで

上記のプロジェクトを実行します。

ドライブ情報取得サンプルフォームロード

ドライブの一覧がリストボックスに表示されているのが確認できます。

次に、リストボックスのドライブを選択します。

ドライブ情報取得サンプルフォーム実行結果

ドライブを選択すると、ドライブの詳細情報がリストビューに設定されます。

参考資料
DriveInfo クラス