代码从网上搜来,由于运行不成功,经自己修改过。
private
List
<
string
>
_serialNumber
=
new
List
<
string
>
();
/// <summary>
/// 调用这个函数将本机所有U盘序列号存储到_serialNumber中
/// </summary>
private void matchDriveLetterWithSerial()
{
string [] diskArray;
string driveNumber;
var searcher = new ManagementObjectSearcher( " SELECT * FROM Win32_LogicalDiskToPartition " );
foreach (ManagementObject dm in searcher.Get())
{
getValueInQuotes(dm[ " Dependent " ].ToString());
diskArray = getValueInQuotes(dm[ " Antecedent " ].ToString()).Split( ' , ' );
driveNumber = diskArray[ 0 ].Remove( 0 , 6 ).Trim();
var disks = new ManagementObjectSearcher( " SELECT * FROM Win32_DiskDrive " );
foreach (ManagementObject disk in disks.Get())
{
if (disk[ " Name " ].ToString() == ( " \\\\.\\PHYSICALDRIVE " + driveNumber) & disk[ " InterfaceType " ].ToString() == " USB " )
{
_serialNumber.Add(parseSerialFromDeviceID(disk[ " PNPDeviceID " ].ToString()));
}
}
}
}
private static string parseSerialFromDeviceID( string deviceId)
{
var splitDeviceId = deviceId.Split( ' \\ ' );
var arrayLen = splitDeviceId.Length - 1 ;
var serialArray = splitDeviceId[arrayLen].Split( ' & ' );
var serial = serialArray[ 0 ];
return serial;
}
private static string getValueInQuotes( string inValue)
{
var posFoundStart = inValue.IndexOf( " \ "" );
var posFoundEnd = inValue.IndexOf( " \ "" , posFoundStart + 1);
var parsedValue = inValue.Substring(posFoundStart + 1 , (posFoundEnd - posFoundStart) - 1 );
return parsedValue;
}
/// <summary>
/// 调用这个函数将本机所有U盘序列号存储到_serialNumber中
/// </summary>
private void matchDriveLetterWithSerial()
{
string [] diskArray;
string driveNumber;
var searcher = new ManagementObjectSearcher( " SELECT * FROM Win32_LogicalDiskToPartition " );
foreach (ManagementObject dm in searcher.Get())
{
getValueInQuotes(dm[ " Dependent " ].ToString());
diskArray = getValueInQuotes(dm[ " Antecedent " ].ToString()).Split( ' , ' );
driveNumber = diskArray[ 0 ].Remove( 0 , 6 ).Trim();
var disks = new ManagementObjectSearcher( " SELECT * FROM Win32_DiskDrive " );
foreach (ManagementObject disk in disks.Get())
{
if (disk[ " Name " ].ToString() == ( " \\\\.\\PHYSICALDRIVE " + driveNumber) & disk[ " InterfaceType " ].ToString() == " USB " )
{
_serialNumber.Add(parseSerialFromDeviceID(disk[ " PNPDeviceID " ].ToString()));
}
}
}
}
private static string parseSerialFromDeviceID( string deviceId)
{
var splitDeviceId = deviceId.Split( ' \\ ' );
var arrayLen = splitDeviceId.Length - 1 ;
var serialArray = splitDeviceId[arrayLen].Split( ' & ' );
var serial = serialArray[ 0 ];
return serial;
}
private static string getValueInQuotes( string inValue)
{
var posFoundStart = inValue.IndexOf( " \ "" );
var posFoundEnd = inValue.IndexOf( " \ "" , posFoundStart + 1);
var parsedValue = inValue.Substring(posFoundStart + 1 , (posFoundEnd - posFoundStart) - 1 );
return parsedValue;
}