1. //需要添加并引用命名空间
    2. System.Management;
    3. //=========================================================================================
    4. /// <summary>
    5. /// 获取U盘的盘符及序列号
    6. /// </summary>
    7. /// <returns>以交错数组string[][]的方式返回U盘的盘符及序列号!</returns>
    8. public static string[][] GetUSBInfo()
    9. {
    10. List<string> usbLoglst = new List<string>();
    11. List<string[]> usbdsklst = new List<string[]>();
    12. List<string[]> usblst = new List<string[]>();
    13. ManagementObjectSearcher usbLog = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk where drivetype=2 and Size>943718400");
    14. ManagementObjectSearcher usbdsk = new ManagementObjectSearcher("Select * from Win32_DiskDrive Where InterfaceType = 'USB'");
    15. if (usbLog.Get().Count >= 1 && usbdsk.Get().Count >= 1)
    16. {
    17. foreach (ManagementObject usbLogitem in usbLog.Get())
    18. {
    19. usbLoglst.Add(usbLogitem["DeviceID"].ToString().Trim(':'));
    20. }
    21. foreach (ManagementObject usbdskitem in usbdsk.Get())
    22. {
    23. string[] lst1;
    24. string usbId = usbdskitem["PNPDeviceID"].ToString();
    25. lst1 = usbId.Substring(usbId.LastIndexOf("\\") + 1).Split('&');
    26. Array.Reverse(lst1);
    27. usbdsklst.Add(new string[] { usbdskitem["Index"].ToString(), lst1[1] });
    28. //usbdsklst.Add(new string[] { usbdskitem["DeviceID"].ToString(), DId.Substring(DId.LastIndexOf("\\") + 1) });
    29. usbdsklst.Sort((x, y) => x[0].CompareTo(y[0]));//升序
    30. }
    31. for (int i = 0; i < usbLoglst.Count; i++)
    32. {
    33. usblst.Add(new string[] { usbLoglst[i], usbdsklst[i][1] });
    34. }
    35. }
    36. string[][] USBID = usblst.ToArray();
    37. return USBID;
    38. }
    39. //=========================================================================================