.NET TIPS

ドライブについての情報を取得するには?[2.0のみ、C#、VB]

デジタルアドバンテージ 遠藤 孝信
2007/02/15

 .NET Framework 1.xのクラス・ライブラリでは、コンピュータの論理ドライブについて、そのフォーマット(FAT、NTFSなど)、種類(ハードディスク、CD-ROMなど)、ボリューム名を取得するには、Win32 APIを呼び出したり、WMI(Windows Management Instrumentation)の機能を使ったりする必要があった。

 しかし.NET Framework 2.0では、新しくDriveInfoクラス(System.IO名前空間)が用意されており、簡単に論理ドライブについての情報を取得できるようになっている。

 このDriveInfoクラスで取得できる論理ドライブについての情報には以下のような項目がある。

項目名 プロパティ名 戻り値
ドライブ名 Name 文字列(「C:\」「D:\」など)
フォーマット DriveFormat 文字列(「FAT32」「NTFS」など)
種類 DriveType DriveType列挙体(System.IO名前空間)の値
ボリュームラベル VolumeLabel 文字列
DriveInfoクラスで取得できる論理ドライブについての情報
この表には記載していない論理ドライブの領域サイズや空き容量などを調べるプロパティについては「TIPS:ドライブの領域サイズと空き容量を調べるには?」で解説しているのでそちらも併せて参照していただきたい。

 なお、これらのプロパティ(ただしNameプロパティを除く)にアクセスする際には、そのドライブの準備ができていないと例外が発生する(例えばCD-ROMドライブではCDが挿入されていなければならない)。ドライブの準備ができているかどうかは、あらかじめIsReadyプロパティの値でチェックできる。

 次のサンプル・プログラムでは、コンピュータに接続されている全ドライブの情報を表示する(準備のできていないドライブについては「Not Ready」を表示する)。

// driveinfo.cs

using System;
using System.IO;

class DriveInfoTest {
  static void Main() {

    foreach (DriveInfo drive in DriveInfo.GetDrives()) {

      Console.Write(drive.Name); // ドライブ名

      if (drive.IsReady) { // ドライブの準備はOK?

        Console.WriteLine("\t{0}\t{1}\t{2}",
          drive.DriveFormat,  // フォーマット
          drive.DriveType,    // 種類
          drive.VolumeLabel); // ボリュームラベル

      } else {
        Console.WriteLine("\tNot Ready");
      }
    }
    // 出力例:
    // C:\     NTFS    Fixed   20G xp
    // D:\     CDFS    CDRom   Audio CD
    // E:\     NTFS    Fixed   40G vista
    // K:\     Not Ready
    // W:\     NTFS    Network 230G XP
    // X:\     NTFS    Network 160G mp3
  }
}

// コンパイル方法:csc driveinfo.cs
全ドライブの情報を表示するC#のサンプル・プログラム(driveinfo.cs)

' driveinfo.vb

Imports System
Imports System.IO

Class DriveInfoTest
  Shared Sub Main()

    For Each drive As DriveInfo In DriveInfo.GetDrives()

      Console.Write(drive.Name) ' ドライブ名

      If drive.IsReady ' ドライブの準備はOK?

        Console.WriteLine( _
            vbTab & drive.DriveFormat _
          & vbTab & drive.DriveType.ToString() _
          & vbTab & drive.VolumeLabel)

      Else
        Console.WriteLine(vbTab & "Not Ready")
      End If
    Next
    ' 出力例:
    ' C:\     NTFS    Fixed   20G xp
    ' D:\     CDFS    CDRom   Audio CD
    ' E:\     NTFS    Fixed   40G vista
    ' K:\     Not Ready
    ' W:\     NTFS    Network 230G XP
    ' X:\     NTFS    Network 160G mp3
  End Sub
End Class

' コンパイル方法:vbc driveinfo.vb
全ドライブの情報を表示するVBのサンプル・プログラム(driveinfo.vb)

 このプログラムでは、各ドライブについてのDriveInfoオブジェクトを作成するのにDriveInfoクラスのGetDrivesメソッドを使用しているが、ドライブ名の一覧を文字列として取得するだけならDirectoryクラス(System.IO名前空間)のGetLogicalDrivesメソッドでも可能だ。これについては「TIPS:利用可能なドライブの一覧を取得するには?」で解説している。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:クラス・ライブラリ 処理対象:ディレクトリ&ファイル
使用ライブラリ:DriveInfoクラス(System.IO名前空間)
関連TIPS:ドライブの領域サイズと空き容量を調べるには?
関連TIPS:利用可能なドライブの一覧を取得するには?

この記事と関連性の高い別の.NET TIPS
利用可能なドライブの一覧を取得するには?
ドライブの領域サイズと空き容量を調べるには?
GAC(グローバル・アセンブリ・キャッシュ)の内容をエクスプローラで通常表示するには?
ドライブをフォーマットするためのダイアログを表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH