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.
4 Answers
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:
- Add a ComboBox control to the Windows Form (drag & drop it on the form from the Toolbox)
- Query the removable drives.
- Bind the results to the ComboBox.

- 8,564
- 3
- 37
- 53
-
2Also note that if you want to include CD-Rom drives, they aren't considered 'Removable' in the `DriveType` enumeration. You might also want to check `|| drive.DriveType == DriveType.CDRom` – Stephen McDaniel Aug 30 '11 at 08:11
-
thank you all for your help but could anyone tell me how to add a drop down menu in my c# winform application and then fill it with the drivers labels and letters – shandoosheri Aug 30 '11 at 08:27
-
Updated my answer to show how you can bind these results to a ComboBox control in a Windows Forms application. – Christophe Geers Aug 30 '11 at 08:36
Yes, the framework includes a DriveType enumeration used by the DriveInfo class. Have a look at the GetDrives() method on MSDN.

- 200,371
- 61
- 386
- 320
You have use WMI for this, check this link for for information and examples.

- 19,064
- 3
- 47
- 70
-
+1 for mentioning WMI. Here's an example using WMI to query drive information: http://www.geekpedia.com/tutorial233_Getting-Disk-Drive-Information-using-WMI-and-Csharp.html – Christophe Geers Aug 30 '11 at 08:12