ここでは、ドライブのタイプ、ボリュームラベル、ファイルシステムなどの情報を取得する方法を紹介します。なおドライブの容量や空き容量を取得する方法は、こちらで紹介しています。
.NET Framework 2.0からはDriveInfoクラスにより、ドライブの情報を取得することができます。
以下の例では、"C:"ドライブの情報を表示しています。
'C:ドライブの情報を取得する Dim drive As New System.IO.DriveInfo("C") 'ドライブの名前 Console.WriteLine("ドライブの名前:{0}", drive.Name) 'ドライブタイプ Dim typeDescription As String = "" Select Case drive.DriveType Case System.IO.DriveType.CDRom typeDescription = "光ディスクドライブ(CD-ROM,DVD-ROMなど)" Case System.IO.DriveType.Fixed typeDescription = "固定ディスク" Case System.IO.DriveType.Network typeDescription = "ネットワークドライブ" Case System.IO.DriveType.NoRootDirectory typeDescription = "ルートディレクトリがない" Case System.IO.DriveType.Ram typeDescription = "RAMディスク" Case System.IO.DriveType.Removable typeDescription = "リムーバブルストレージデバイス" + _ "フロッピーディスクドライブ、USBフラッシュドライブなど" Case System.IO.DriveType.Unknown typeDescription = "不明" End Select Console.WriteLine("ドライブタイプ:{0}", typeDescription) 'ドライブの準備ができているか調べる If drive.IsReady Then 'ボリュームラベル Console.WriteLine("ボリュームラベル:{0}", drive.VolumeLabel) 'ファイルシステム(NTFS、FAT32など) Console.WriteLine("ファイルシステム:{0}", drive.DriveFormat) 'ルートディレクトリ(DirectoryInfoオブジェクト) Console.WriteLine("ルートディレクトリ:{0}", drive.RootDirectory.FullName) End If
//C:ドライブの情報を取得する System.IO.DriveInfo drive = new System.IO.DriveInfo("C"); //ドライブの名前 Console.WriteLine("ドライブの名前:{0}", drive.Name); //ドライブタイプ string typeDescription = ""; switch (drive.DriveType) { case System.IO.DriveType.CDRom: typeDescription = "光ディスクドライブ(CD-ROM,DVD-ROMなど)"; break; case System.IO.DriveType.Fixed: typeDescription = "固定ディスク"; break; case System.IO.DriveType.Network: typeDescription = "ネットワークドライブ"; break; case System.IO.DriveType.NoRootDirectory: typeDescription = "ルートディレクトリがない"; break; case System.IO.DriveType.Ram: typeDescription = "RAMディスク"; break; case System.IO.DriveType.Removable: typeDescription = "リムーバブルストレージデバイス" + "フロッピーディスクドライブ、USBフラッシュドライブなど"; break; case System.IO.DriveType.Unknown: typeDescription = "不明"; break; } Console.WriteLine("ドライブタイプ:{0}", typeDescription); //ドライブの準備ができているか調べる if (drive.IsReady) { //ボリュームラベル Console.WriteLine("ボリュームラベル:{0}", drive.VolumeLabel); //ファイルシステム(NTFS、FAT32など) Console.WriteLine("ファイルシステム:{0}", drive.DriveFormat); //ルートディレクトリ(DirectoryInfoオブジェクト) Console.WriteLine("ルートディレクトリ:{0}", drive.RootDirectory.FullName); }
上記のコードを実行した結果、例えば次のように出力されます。
ドライブの名前:C:\ ドライブタイプ:固定ディスク ボリュームラベル:Windows ファイルシステム:NTFS ルートディレクトリ:C:\
WMI使って取得することもできます。WMIはWindows2000以上のOSで使用できます。(それ以外のOSでもインストールすれば使用できます。こちらからダウンロードできるようです。)
下の例ではSystem.Management.dllを参照設定に追加する必要があります。
'C:ドライブの情報を取得する Dim mo As New System.Management.ManagementObject("Win32_LogicalDisk=""C:""") '名前("C:"など) Console.WriteLine("名前:{0}", CStr(mo.Properties("Name").Value)) 'ドライブタイプ Dim typeDescription As String = "" Select Case Convert.ToInt64(mo.Properties("DriveType").Value) Case 5 typeDescription = "光ディスクドライブ(CD-ROM,DVD-ROMなど)" Case 3 typeDescription = "固定ディスク" Case 4 typeDescription = "ネットワークドライブ" Case 1 typeDescription = "ルートディレクトリがない" Case 6 typeDescription = "RAMディスク" Case 2 typeDescription = "リムーバブルストレージデバイス" + _ "フロッピーディスクドライブ、USBフラッシュドライブなど" Case 0 typeDescription = "不明" End Select Console.WriteLine("ドライブタイプ:{0}", typeDescription) 'ボリュームラベル Console.WriteLine("ボリュームラベル:{0}", _ CStr(mo.Properties("VolumeName").Value)) 'ボリュームシリアルナンバー Console.WriteLine("ボリュームシリアルナンバー:{0}", _ CStr(mo.Properties("VolumeSerialNumber").Value)) 'ファイルシステム(NTFS、FAT32など) Console.WriteLine("ファイルシステム:{0}", _ CStr(mo.Properties("FileSystem").Value)) '説明(「ローカル固定ディスク」など) Console.WriteLine("説明:{0}", _ CStr(mo.Properties("Description").Value)) mo.Dispose()
//C:ドライブの情報を取得する System.Management.ManagementObject mo = new System.Management.ManagementObject("Win32_LogicalDisk=\"C:\""); //名前("C:"など) Console.WriteLine("名前:{0}", (string)mo.Properties["Name"].Value); //ドライブタイプ string typeDescription = ""; switch ((uint)mo.Properties["DriveType"].Value) { case 5: typeDescription = "光ディスクドライブ(CD-ROM,DVD-ROMなど)"; break; case 3: typeDescription = "固定ディスク"; break; case 4: typeDescription = "ネットワークドライブ"; break; case 1: typeDescription = "ルートディレクトリがない"; break; case 6: typeDescription = "RAMディスク"; break; case 2: typeDescription = "リムーバブルストレージデバイス" + "フロッピーディスクドライブ、USBフラッシュドライブなど"; break; case 0: typeDescription = "不明"; break; } Console.WriteLine("ドライブタイプ:{0}", typeDescription); //ボリュームラベル Console.WriteLine("ボリュームラベル:{0}", (string)mo.Properties["VolumeName"].Value); //ボリュームシリアルナンバー Console.WriteLine("ボリュームシリアルナンバー:{0}", (string)mo.Properties["VolumeSerialNumber"].Value); //ファイルシステム(NTFS、FAT32など) Console.WriteLine("ファイルシステム:{0}", (string)mo.Properties["FileSystem"].Value); //説明(「ローカル固定ディスク」など) Console.WriteLine("説明:{0}", (string)mo.Properties["Description"].Value); mo.Dispose();