C#获取U盘序列号的方法
本文实例讲述了C#获取U盘序列号的方法。分享给大家供大家参考。具体如下:
usingSystem.Management;
privateList<string>_serialNumber=newList<string>();
///<summary>
///调用这个函数将本机所有U盘序列号存储到_serialNumber中
///</summary>
privatevoidmatchDriveLetterWithSerial()
{
string[]diskArray;
stringdriveNumber;
varsearcher=newManagementObjectSearcher("SELECT*FROMWin32_LogicalDiskToPartition");
foreach(ManagementObjectdminsearcher.Get())
{
getValueInQuotes(dm["Dependent"].ToString());
diskArray=getValueInQuotes(dm["Antecedent"].ToString()).Split(',');
driveNumber=diskArray[0].Remove(0,6).Trim();
vardisks=newManagementObjectSearcher("SELECT*FROMWin32_DiskDrive");
foreach(ManagementObjectdiskindisks.Get())
{
if(disk["Name"].ToString()==("\\\\.\\PHYSICALDRIVE"+driveNumber)&disk["InterfaceType"].ToString()=="USB")
{
_serialNumber.Add(parseSerialFromDeviceID(disk["PNPDeviceID"].ToString()));
}
}
}
}
privatestaticstringparseSerialFromDeviceID(stringdeviceId)
{
varsplitDeviceId=deviceId.Split('\\');
vararrayLen=splitDeviceId.Length-1;
varserialArray=splitDeviceId[arrayLen].Split('&');
varserial=serialArray[0];
returnserial;
}
privatestaticstringgetValueInQuotes(stringinValue)
{
varposFoundStart=inValue.IndexOf("\"");
varposFoundEnd=inValue.IndexOf("\"",posFoundStart+1);
varparsedValue=inValue.Substring(posFoundStart+1,(posFoundEnd-posFoundStart)-1);
returnparsedValue;
}
调用方法:
matchDriveLetterWithSerial();
string[]aa=_serialNumber.ToArray();
for(inti=0;i<aa.Length;i++)
{
aa[i].ToString();//这里就可以拿出现在所有的U盘序列号
}
希望本文所述对大家的C#程序设计有所帮助。