栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

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

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

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

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

安装完成使用 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

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

    /// 
    /// 获得pc号
    /// 
    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;
    }

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/122864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号