检测磁盘是否为闪存驱动器

问题描述:

我想编写检测闪存驱动器的程序。
但有一个问题。
代码:检测磁盘是否为闪存驱动器

DriveInfo[] allDrives = DriveInfo.GetDrives(); 

     foreach (DriveInfo drive in DriveInfo.GetDrives()) 
     { 
      if (drive.DriveType == DriveType.Removable) 
      { 
      } 
     } 

它运作良好,但它检测到光驱了。如何预防它?

+1

这表明您的计算机报告了cdrom驱动器的错误类型。你有一些光盘刻录软件可能导致这种情况吗? –

+0

我不使用任何刻录软件,因为我不真正刻录CD和DVD的顺便说一句。我的电脑现在正在运行Windows 10,但我将很快安装Windows 7 – Mudzay

+0

我之前检查过Windows 7,所以我只是为了确保我也检查了Windows 10。它仍然看起来像您的计算机报告了光驱的错误类型。它是否通过USB连接? (我没有一个USB DVD驱动器来检查。) –

我没有回答为什么你的代码不工作。但是,如果你想检测的USB设备,你也可以与WMI这样的尝试:

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

的System.Management组件添加到您的项目做这样的。

+0

谢谢,现在就测试。 – Mudzay

+0

我添加了System.Management程序集,但此代码不起作用。我得到“无法找到类型或名称空间名称'ManagementObjectCollection'(您是否缺少使用指令或程序集引用?”)错误 – Mudzay

+0

在此处查看如何添加缺少的程序集:https://msdn.microsoft.com/ de-de/library/ee231595%28v = vs.110%29.aspx这里也是一个例子:http://*.com/questions/2157133/how-do-i-add-an-assembly-to-a -visual-studio-project-and-reference-it你必须将System.Management程序集添加到你的项目 – Fruchtzwerg