首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#中的GetDriveType?或者看看我的硬盘是不是可以移动?

C#中的GetDriveType?或者看看我的硬盘是不是可以移动?
EN

Stack Overflow用户
提问于 2009-03-08 08:03:07
回答 4查看 8.2K关注 0票数 5

我正在使用Environment.GetLogicalDrives();获取驱动器列表。我记得在c++中,我可以使用GetDriveType来找出设备是CD、removable、flash等等,我想在我的应用程序中添加一个过滤器,默认情况下只显示CD和removable。C#中的GetDriveType等效项是什么?谷歌只向我展示了使用c++调用的技巧。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-08 08:08:14

是的,框架包含DriveInfo类使用的DriveType枚举。看看MSDN上的GetDrives()方法。

票数 8
EN

Stack Overflow用户

发布于 2011-08-30 16:08:47

您可以使用DriveInfo type检索驱动器列表。您需要检查DriveType property (枚举)

代码语言:javascript
复制
var drives = DriveInfo.GetDrives();
foreach (var drive in drives)
{
    if (drive.DriveType == DriveType.Removable)
    {
        Console.WriteLine(drive.Name);
    }
}

您还可以使用LINQ- to -Objects来查询驱动器:

代码语言:javascript
复制
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盘:

代码语言:javascript
复制
ManagementObjectCollection drives = new ManagementObjectSearcher(
    "SELECT Caption, DeviceID FROM Win32_DiskDrive WHERE InterfaceType='USB'"
).Get();

如果要使用System.Management,请添加对WMI程序集的引用。

如果要用此数据填充Windows Forms应用程序中的ComboBox,则需要将结果绑定到ComboBox控件。

例如:

代码语言:javascript
复制
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。
票数 12
EN

Stack Overflow用户

发布于 2009-03-08 08:08:24

DriveInfo就是你要找的类。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/623254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档