C# 获取 PC 序列号的方法示例
在C++需要使用GetSystemFirmwareTable的方法来获得PC的序列号,需要写的代码很多,但是在C#可以使用WMI来拿到序列号
首先是安装System.Management,安装了这个库,在dotnetframework和dotnetcore都可以使用本文的方法获取PC的序列号
安装System.Management的方法是通过Nuget搜索System.Management然后安装,如果使用的是VisualStudio2017项目格式就可以复制下面代码到项目文件
我比较喜欢第二个方法来安装,因为这个速度比较快
安装完成使用WMI拿到序列号需要的代码很少,请看下面
varsearch=newManagementObjectSearcher("SELECT*FROMWin32_BIOS"); varmobos=search.Get(); foreach(vartempinmobos) { objectserial=temp["SerialNumber"];//ProcessorIDifyouuseWin32_CPU pcsn=serial.ToString(); Console.WriteLine(pcsn); }
这样就可以拿到序列号,但是可能有些设备是没有序列号,很多时候是返回下面代码
TobefilledbyO.E.M
TobefilledbyO.E.M.
Default
Defaultstring
上面代码最后一行就是空白,所以需要先做判断是不是存在序列号,所有代码请看下面
//////获得pc号 /// publicstaticstringGetPcsnString() { varpcsn=""; try { varsearch=newManagementObjectSearcher("SELECT*FROMWin32_BIOS"); varmobos=search.Get(); foreach(vartempinmobos) { objectserial=temp["SerialNumber"];//ProcessorIDifyouuseWin32_CPU pcsn=serial.ToString(); Console.WriteLine(pcsn); if ( !string.IsNullOrEmpty(pcsn) &&pcsn!="TobefilledbyO.E.M"//没有找到 &&!pcsn.Contains("O.E.M") &&!pcsn.Contains("OEM") &&!pcsn.Contains("Default") ) { break; } else { Console.WriteLine("默认值"); } } } catch(Exceptione) { Debug.WriteLine(e); //无法处理 } returnpcsn; }
需要知道,使用这个方法获取序列号是比较耗性能的,建议放在其他线程获取
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。