我正在尝试通过循环 DriveInfo.GetDrives()
的结果来识别驱动器类型。
但是对于USB和软盘,我得到了相同的DriveType.Removable
值。
我该如何区分它们?
我正在尝试通过循环 DriveInfo.GetDrives()
的结果来识别驱动器类型。
但是对于USB和软盘,我得到了相同的DriveType.Removable
值。
我该如何区分它们?
你可以使用 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 页面列出了完整的可访问属性列表(因为您在此处无法获得自动完成)。
Win32_LogicalDisk
或Win32_MappedLogicalDisk
替换Win32_DiskDrive
,看看这些数据是否对您更有用; 请参阅此链接。 - ashes999foreach (var dr in DriveInfo.GetDrives())
{
if (dr.IsReady == true)
{
Console.WriteLine(string.Format("name : {0} type : {1}", dr, dr.DriveType));
}
}