在.NET中,一般通过DriverInfo查看磁盘驱动器的情况,但对于USB设备,只能通过removeable识别出U盘,而无法识别出移动硬盘。这里介绍通过WMI识别移动硬盘的方法。以下代码取得了第一个USB驱动器。
public static DriveInfo GetUsbDrive() { ManagementObjectSearcher searcher = new ManagementObjectSearcher(); searcher.Query = new SelectQuery("Win32_DiskDrive", "InterfaceType = \"USB\""); var usbDiskDrive = searcher.Get().Cast<ManagementObject>().FirstOrDefault(); if (usbDiskDrive == null) { return null; } searcher.Query = new SelectQuery("Win32_DiskDriveToDiskPartition"); var diskDriveToDiskPartition = searcher.Get().Cast<ManagementObject>(); searcher.Query = new SelectQuery("Win32_LogicalDiskToPartition"); var logicalDiskToPartition = searcher.Get().Cast<ManagementObject>(); searcher.Query = new SelectQuery("Win32_LogicalDisk"); var logicalDisk = searcher.Get().Cast<ManagementObject>(); var usbPartition = diskDriveToDiskPartition.First(p => p["Antecedent"].ToString() == usbDiskDrive.ToString())["Dependent"].ToString(); var usbLogicalDisk = logicalDiskToPartition.First(p => p["Antecedent"].ToString() == usbPartition)["Dependent"].ToString(); var usb = logicalDisk.First(p => p.ToString() == usbLogicalDisk); return new DriveInfo(usb["DeviceID"].ToString()); }