4

我试图通过循环DriveInfo.GetDrives()结果来识别驱动器类型。
但是对于 USB 和软盘,我得到相同的DriveType.Removable值。

我怎样才能区分它们?

4

2 回答 2

7

您可以使用 WMI (Windows Management Instrumentation) 获得的不仅仅是 DriveInfo 类中的内容。在这种情况下,您可以获得接口类型,对于 USB 驱动器,它将是“USB”。

示例代码如下。您需要添加对System.Management.

using System.Management;

try
{
    ManagementObjectSearcher searcher =
        new ManagementObjectSearcher("root\\CIMV2",
        "SELECT * FROM Win32_DiskDrive");

    foreach(ManagementObject queryObj in searcher.Get())
    {
        foreach(ManagementObject o in queryObj.GetRelated("Win32_DiskPartition"))
        {
            foreach(ManagementBaseObject b in o.GetRelated("Win32_LogicalDisk"))
            {
                Debug.WriteLine("    #Name: {0}", b["Name"]);
            }
        }
        // One of: USB, IDE
        Debug.WriteLine("Interface: {0}", queryObj["InterfaceType"]);
        Debug.WriteLine("--------------------------------------------");
    }
}
catch (ManagementException f)
{
    Debug.WriteLine(f.StackTrace);
}

作为参考,这个 MSDN 页面记录了可访问属性的完整列表(因为您没有获得自动完成功能)。

于 2010-12-23T15:50:03.097 回答
1

CD驱动器和软盘驱动器尚未准备好,因此您可以尝试以下操作:

foreach (var dr in DriveInfo.GetDrives())
{
    if (dr.IsReady == true)
    {
        Console.WriteLine(string.Format("name : {0}   type : {1}", dr, dr.DriveType));
    }
}

这是区分 USB 和软盘设备的简单方法

于 2016-04-03T12:24:42.937 回答