5

私はEnvironment.GetLogicalDrives();を使用しています。ドライブのリストを取得します。C ++では、GetDriveTypeを使用して、デバイスがCD、リムーバブル、フラッシュなどであるかどうかを確認できました。アプリにフィルターを配置して、デフォルトでCDとリムーバブルのみを表示したいと考えています。C#で同等のGetDriveTypeとは何ですか?グーグルは私にc++呼び出しを使用するためのハックを示しただけです。

4

4 に答える 4

12

DriveInfoタイプを使用して、ドライブのリストを取得できます。DriveTypeプロパティ(列挙型)を確認する必要があります

var drives = DriveInfo.GetDrives();
foreach (var drive in drives)
{
    if (drive.DriveType == DriveType.Removable)
    {
        Console.WriteLine(drive.Name);
    }
}

LINQ-to-Objectsを使用してドライブにクエリを実行することもできます。

var drives = from drive in DriveInfo.GetDrives()
             where drive.DriveType == DriveType.Removable
             select drive;

foreach(var drive in drives)
{
    Console.WriteLine(drive.Name);
}

前述の@TheCodeKingと同様に、WMIを使用してドライブ情報を照会することもできます。

たとえば、次の方法でUSBスティックを照会できます。

ManagementObjectCollection drives = new ManagementObjectSearcher(
    "SELECT Caption, DeviceID FROM Win32_DiskDrive WHERE InterfaceType='USB'"
).Get();

WMIを使用する場合は、System.Managementアセンブリへの参照を追加します。

WindowsフォームアプリケーションのComboBoxにこのデータを入力する場合は、結果をComboBoxコントロールにバインドする必要があります。

例えば:

private void Form1_Load(object sender, EventArgs e)
{
    var drives = from drive in DriveInfo.GetDrives()
                 where drive.DriveType == DriveType.Removable
                 select drive;

    comboBox1.DataSource = drives.ToList();
}

要約すると:

  1. ComboBoxコントロールをWindowsフォームに追加します(ツールボックスからフォームにドラッグアンドドロップします)
  2. リムーバブルドライブを照会します。
  3. 結果をComboBoxにバインドします。
于 2011-08-30T08:08:47.230 に答える
8

はい、フレームワークには、 DriveInfoクラスで使用されるDriveType列挙が含まれています。MSDNのGetDrives()メソッドをご覧ください。

于 2009-03-08T08:08:13.807 に答える
2

DriveInfoはあなたが探しているクラスです。

于 2009-03-08T08:08:24.163 に答える
1

これにはWMIを使用しています。情報と例については、このリンクを確認してください。

于 2011-08-30T08:09:51.003 に答える