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

 更新时间:2015年10月06日 15:36:11   作者:蓝图  
这篇文章主要介绍了C#获取U盘序列号的方法,涉及C#针对硬件底层信息操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

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

using System.Management;
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;
}

调用方法:

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

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

相关文章

  • C#利用win32 Api 修改本地系统时间、获取硬盘序列号

    C#利用win32 Api 修改本地系统时间、获取硬盘序列号

    这篇文章主要介绍了C#利用win32 Api 修改本地系统时间、获取硬盘序列号的方法及代码分享,需要的朋友可以参考下
    2015-03-03
  • DataGridView实现点击列头升序和降序排序

    DataGridView实现点击列头升序和降序排序

    这篇文章介绍了DataGridView实现点击列头升序和降序排序的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#中的高效IO库System.IO.Pipelines

    C#中的高效IO库System.IO.Pipelines

    这篇文章介绍了C#中的高效IO库System.IO.Pipelines,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • C#制作网站挂机程序的实现示例

    C#制作网站挂机程序的实现示例

    本文主要介绍了C#制作网站挂机程序,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • c#构造初始化的顺序浅析

    c#构造初始化的顺序浅析

    这篇文章介绍了c#构造初始化的顺序,有需要的朋友可以参考一下
    2013-08-08
  • C#中的问号(?号)用法小结

    C#中的问号(?号)用法小结

    这篇文章主要介绍了C#中的问号(?号)用法小结,本文介绍了3种用法,分别作为修饰符、运算符的用法,需要的朋友可以参考下
    2014-07-07
  • C#微信开发之微信公众号标签管理功能

    C#微信开发之微信公众号标签管理功能

    这篇文章主要介绍了C#微信开发之微信公众号标签管理功能 的相关资料,需要的朋友可以参考下
    2016-05-05
  • 一篇文章弄懂C#中的async和await

    一篇文章弄懂C#中的async和await

    这篇文章主要给大家介绍了如何通过一篇文章弄懂C#中async和await的相关资料,async和await相信大家应该不陌生,让异步处理变得更友好,本文通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • C#程序加密工具.Net Reactor详细教程

    C#程序加密工具.Net Reactor详细教程

    .Net Reacto加密工具是一款强大的 .NET 代码保护和授权管理系统,安全可靠、简单易用,主要用来帮助开发人员保护他们的 .NET 软件产品,本文给大家详细介绍C#程序加密工具.Net Reactor教程,感兴趣的朋友一起看看吧
    2022-02-02
  • C#中的Socket编程详解

    C#中的Socket编程详解

    本文详细讲解了C#中的Socket编程,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01

最新评论