首页 > 编程 > C# > 正文

C#获取U盘序列号的方法

2019-10-29 21:38:11
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C#获取U盘序列号的方法,涉及C#针对硬件底层信息操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#获取U盘序列号的方法。分享给大家供大家参考。具体如下:

 

 
  1. using System.Management; 
  2. private List<string> _serialNumber = new List<string>(); 
  3. /// <summary> 
  4. /// 调用这个函数将本机所有U盘序列号存储到_serialNumber中 
  5. /// </summary> 
  6. private void matchDriveLetterWithSerial() 
  7. string[] diskArray; 
  8. string driveNumber; 
  9. var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDiskToPartition"); 
  10. foreach (ManagementObject dm in searcher.Get()) 
  11. getValueInQuotes(dm["Dependent"].ToString()); 
  12. diskArray = getValueInQuotes(dm["Antecedent"].ToString()).Split(','); 
  13. driveNumber = diskArray[0].Remove(0, 6).Trim(); 
  14. var disks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive"); 
  15. foreach (ManagementObject disk in disks.Get()) 
  16. if (disk["Name"].ToString() == ("////.//PHYSICALDRIVE" + driveNumber) & disk["InterfaceType"].ToString() == "USB"
  17. _serialNumber.Add(parseSerialFromDeviceID(disk["PNPDeviceID"].ToString())); 
  18. private static string parseSerialFromDeviceID(string deviceId) 
  19. var splitDeviceId = deviceId.Split('//'); 
  20. var arrayLen = splitDeviceId.Length - 1; 
  21. var serialArray = splitDeviceId[arrayLen].Split('&'); 
  22. var serial = serialArray[0]; 
  23. return serial; 
  24. private static string getValueInQuotes(string inValue) 
  25. var posFoundStart = inValue.IndexOf("/""); 
  26. var posFoundEnd = inValue.IndexOf("/"", posFoundStart + 1); 
  27. var parsedValue = inValue.Substring(posFoundStart + 1, (posFoundEnd - posFoundStart) - 1); 
  28. return parsedValue; 

调用方法:

 

 
  1. matchDriveLetterWithSerial(); 
  2. string[] aa = _serialNumber.ToArray(); 
  3. for (int i = 0; i < aa.Length; i++) 
  4. aa[i].ToString(); //这里就可以拿出现在所有的U盘序列号 

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表