GetDriveType in C#? or find out if my drive is removable?

∥☆過路亽.° 提交于 2020-01-30 04:31:12

问题


I am using Environment.GetLogicalDrives(); to get a list of drives. I remember in c++ i could use GetDriveType to find if the device was CD, removable, flash, etc and i am thinking i want to put a filter in my app to only show CD and removable on default. What is the GetDriveType equivalent in C#? google only showed me hacks to use the c++ call.


回答1:


Yes, the framework includes a DriveType enumeration used by the DriveInfo class. Have a look at the GetDrives() method on MSDN.




回答2:


You can use the DriveInfo type to retrieve a list of the drives. You need to check the DriveType property (enum)

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

You can also use LINQ-to-Objects to query the drives:

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

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

Like the @TheCodeKing mentioned you can also use WMI to query drive information.

For example, you can query for USB sticks in the following manner:

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

Add a reference to the System.Management assembly if you are going to use WMI.

If you want to fill a ComboBox in a Windows Forms application with this data you need to bind the results to the ComboBox control.

For example:

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();
}

To recapitulate:

  1. Add a ComboBox control to the Windows Form (drag & drop it on the form from the Toolbox)
  2. Query the removable drives.
  3. Bind the results to the ComboBox.



回答3:


DriveInfo is the class you are looking for.




回答4:


You have use WMI for this, check this link for for information and examples.



来源:https://stackoverflow.com/questions/7240287/get-list-of-removable-media-drives-in-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!