如何确定驱动器是否为外部驱动器
如何确定驱动器是否是通过USB插入的外置驱动器? 我检查了DriveInfo.DriveType但是通过usb插入了我的1TB外置驱动器,它显示为固定驱动器。
想法?
你可以使用WMI
Select * from Win32_LogicalDisk
你有
Select Case .DriveType Case 0 strDriveType = "Unknown" Case 1 strDriveType = "No Root Directory" Case 2 strDriveType = "Removable Disk" Case 3 strDriveType = "Local Disk" Case 4 strDriveType = "Network Drive" Case 5 strDriveType = "Compact Disc" Case 6 strDriveType = "RAM Disk" End Select
基于Floyd Pink的评论我使用了这个链接 。 这允许我确定设备是否是外部设备。
public bool IsProjectOnExternalDisk(string driveLetter) { bool retVal = false; driveLetter = driveLetter.TrimEnd('\\'); // browse all USB WMI physical disks foreach (ManagementObject drive in new ManagementObjectSearcher("select DeviceID, MediaType,InterfaceType from Win32_DiskDrive").Get()) { // associate physical disks with partitions ManagementObjectCollection partitionCollection = new ManagementObjectSearcher(String.Format("associators of {{Win32_DiskDrive.DeviceID='{0}'}} " + "where AssocClass = Win32_DiskDriveToDiskPartition", drive["DeviceID"])).Get(); foreach (ManagementObject partition in partitionCollection) { if (partition != null) { // associate partitions with logical disks (drive letter volumes) ManagementObjectCollection logicalCollection = new ManagementObjectSearcher(String.Format("associators of {{Win32_DiskPartition.DeviceID='{0}'}} " + "where AssocClass= Win32_LogicalDiskToPartition", partition["DeviceID"])).Get(); foreach (ManagementObject logical in logicalCollection) { if (logical != null) { // finally find the logical disk entry ManagementObjectCollection.ManagementObjectEnumerator volumeEnumerator = new ManagementObjectSearcher(String.Format("select DeviceID from Win32_LogicalDisk " + "where Name='{0}'", logical["Name"])).Get().GetEnumerator(); volumeEnumerator.MoveNext(); ManagementObject volume = (ManagementObject)volumeEnumerator.Current; if (driveLetter.ToLowerInvariant().Equals(volume["DeviceID"].ToString().ToLowerInvariant()) && (drive["MediaType"].ToString().ToLowerInvariant().Contains("external") || drive["InterfaceType"].ToString().ToLowerInvariant().Contains("usb"))) { retVal = true; break; } } } } } } return retVal; }
使用WMI Select * from Win32_LogicalDisk
如在Royi Namir的答案中, DriveInfo.DriveType
将我的外部类型显示为“本地磁盘” ,我不能用它来确定驱动器是否是外部的。