//需要添加并引用命名空间
System.Management;
//=========================================================================================
/// <summary>
/// 获取U盘的盘符及序列号
/// </summary>
/// <returns>以交错数组string[][]的方式返回U盘的盘符及序列号!</returns>
public static string[][] GetUSBInfo()
{
List<string> usbLoglst = new List<string>();
List<string[]> usbdsklst = new List<string[]>();
List<string[]> usblst = new List<string[]>();
ManagementObjectSearcher usbLog = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk where drivetype=2 and Size>943718400");
ManagementObjectSearcher usbdsk = new ManagementObjectSearcher("Select * from Win32_DiskDrive Where InterfaceType = 'USB'");
if (usbLog.Get().Count >= 1 && usbdsk.Get().Count >= 1)
{
foreach (ManagementObject usbLogitem in usbLog.Get())
{
usbLoglst.Add(usbLogitem["DeviceID"].ToString().Trim(':'));
}
foreach (ManagementObject usbdskitem in usbdsk.Get())
{
string[] lst1;
string usbId = usbdskitem["PNPDeviceID"].ToString();
lst1 = usbId.Substring(usbId.LastIndexOf("\\") + 1).Split('&');
Array.Reverse(lst1);
usbdsklst.Add(new string[] { usbdskitem["Index"].ToString(), lst1[1] });
//usbdsklst.Add(new string[] { usbdskitem["DeviceID"].ToString(), DId.Substring(DId.LastIndexOf("\\") + 1) });
usbdsklst.Sort((x, y) => x[0].CompareTo(y[0]));//升序
}
for (int i = 0; i < usbLoglst.Count; i++)
{
usblst.Add(new string[] { usbLoglst[i], usbdsklst[i][1] });
}
}
string[][] USBID = usblst.ToArray();
return USBID;
}
//=========================================================================================