在.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());
        }

 

 

 

 

 

posted on 2012-08-23 16:41  GIN.  阅读(223)  评论(0编辑  收藏  举报