我正在使用 Environment.GetLogicalDrives(); 获取驱动器列表。我记得在 C++ 中,我可以使用 GetDriveType 来查找设备是否是 CD、可移动、闪存等,我想我想在我的应用程序中放置一个过滤器,以便在默认情况下仅显示 CD 和可移动设备。C# 中的 GetDriveType 等价物是什么?谷歌只向我展示了使用 c++ 调用的技巧。
user34537
问问题
8225 次
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 来查询驱动器信息。
例如,您可以通过以下方式查询 U 盘:
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();
}
回顾一下:
- 将 ComboBox 控件添加到 Windows 窗体(从工具箱将其拖放到窗体上)
- 查询可移动驱动器。
- 将结果绑定到 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 回答