C# 获取 PC 序列号的方法示例

 更新时间:2018年07月31日 10:41:44   作者:林德熙  
这篇文章主要介绍了C# 获取 PC 序列号的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在 C++ 需要使用 GetSystemFirmwareTable 的方法来获得 PC 的序列号,需要写的代码很多,但是在 C# 可以使用 WMI 来拿到序列号

首先是安装 System.Management ,安装了这个库,在 dotnet framework 和 dotnet core 都可以使用本文的方法获取 PC 的序列号

安装 System.Management 的方法是通过 Nuget 搜索System.Management然后安装,如果使用的是VisualStudio 2017项目格式就可以复制下面代码到项目文件

<PackageReference Include="System.Management" Version="4.5.0" />

我比较喜欢第二个方法来安装,因为这个速度比较快

安装完成使用 WMI 拿到序列号需要的代码很少,请看下面

        var search = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS");
        var mobos = search.Get();
        foreach (var temp in mobos)
        {
          object serial = temp["SerialNumber"]; // ProcessorID if you use Win32_CPU
          pcsn = serial.ToString();
          Console.WriteLine(pcsn);
        }

这样就可以拿到序列号,但是可能有些设备是没有序列号,很多时候是返回下面代码

To be filled by O.E.M
To be filled by O.E.M.
Default
Default string

上面代码最后一行就是空白,所以需要先做判断是不是存在序列号,所有代码请看下面

    /// <summary>
    /// 获得pc号
    /// </summary>
    public static string GetPcsnString()
    {
      var pcsn = "";
      try
      {
        var search = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS");
        var mobos = search.Get();
        foreach (var temp in mobos)
        {
          object serial = temp["SerialNumber"]; // ProcessorID if you use Win32_CPU
          pcsn = serial.ToString();
          Console.WriteLine(pcsn);

          if
          (
            !string.IsNullOrEmpty(pcsn)
            && pcsn != "To be filled by O.E.M" //没有找到
            && !pcsn.Contains("O.E.M")
            && !pcsn.Contains("OEM")
            && !pcsn.Contains("Default")
          )
          {
            break;
          }
          else
          {
            Console.WriteLine("默认值");
          }
        }
      }
      catch (Exception e)
      {
        Debug.WriteLine(e);
        // 无法处理
      }

      return pcsn;
    }

需要知道,使用这个方法获取 序列号是比较耗性能的,建议放在其他线程获取

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • c# 多线程处理多个数据的方法

    c# 多线程处理多个数据的方法

    这篇文章主要介绍了c# 多线程处理多个数据的方法,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • 重写、隐藏基类(new, override)的方法

    重写、隐藏基类(new, override)的方法

    重写、隐藏基类(new, override)的方法,需要的朋友可以参考一下
    2013-03-03
  • C#实现连接电子秤串口自动称重

    C#实现连接电子秤串口自动称重

    这篇文章介绍了C#实现连接电子秤串口自动称重的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#微信公众号开发之使用MessageHandler简化消息处理流程

    C#微信公众号开发之使用MessageHandler简化消息处理流程

    这篇文章介绍了C#微信公众号开发之使用MessageHandler简化消息处理流程,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#中string用法实例详解

    C#中string用法实例详解

    这篇文章主要介绍了C#中string用法,非常详细的总结了比较常见的关于C#中string的几个常用方法,需要的朋友可以参考下
    2014-08-08
  • C#资源释放方法实例分析

    C#资源释放方法实例分析

    这篇文章主要介绍了C#资源释放方法,结合实例详细分析了C#资源释放的具体方法与相关技巧,需要的朋友可以参考下
    2016-02-02
  • C#中的一些延时函数

    C#中的一些延时函数

    这篇文章主要介绍了C#中的一些延时函数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 详解如何实现C#和Python间实时视频数据交互

    详解如何实现C#和Python间实时视频数据交互

    我们在做RTSP|RTMP播放的时候,遇到好多开发者,他们的视觉算法大多运行在python下,需要高效率的实现C#和Python的视频数据交互,本文给大家总结了一些常用的方法,感兴趣的小伙伴跟着小编一起来看看吧
    2024-10-10
  • C#查看/写入日志到Windows事件查看器的操作方法

    C#查看/写入日志到Windows事件查看器的操作方法

    Windows 操作系统将与计算机的系统性能、应用程序和安全方面相关的每个事件记录在 C:\WINDOWS\system32\winevt 的日志中,事件查看器从这些原始事件日志中读取信息,然后以可读格式呈现信息,本文介绍了C#如何查看/写入日志到Windows事件查看器,需要的朋友可以参考下
    2024-09-09
  • C# 汉字转化拼音的简单实例代码

    C# 汉字转化拼音的简单实例代码

    C# 汉字转化拼音的简单实例代码,需要的朋友可以参考一下
    2013-04-04

最新评论