我正在尝试通过循环DriveInfo.GetDrives()
结果来识别驱动器类型
但对于USB和软盘,我得到相同的DriveType.Removable
值。
我如何区分它们?
答案 0 :(得分: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);
}
作为参考,this MSDN page记录了可访问属性的完整列表(因为您没有获得自动完成功能)。
答案 1 :(得分:1)
CD驱动器和软盘驱动器尚未就绪,因此您可以尝试:
foreach (var dr in DriveInfo.GetDrives())
{
if (dr.IsReady == true)
{
Console.WriteLine(string.Format("name : {0} type : {1}", dr, dr.DriveType));
}
}
这是区分USB和软盘设备的简便方法