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

后端 未结 4 1527
傲寒
傲寒 2021-01-18 01:32

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 t

相关标签:
4条回答
  • 2021-01-18 01:44

    DriveInfo is the class you are looking for.

    0 讨论(0)
  • 2021-01-18 01:46

    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.
    0 讨论(0)
  • 2021-01-18 01:49

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

    0 讨论(0)
  • 2021-01-18 01:50

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

    0 讨论(0)
提交回复
热议问题