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#程序设计有所帮助。