C# 读取电脑硬件信息

本文介绍了如何使用C#编程获取计算机硬件信息,包括CPU型号、制造商、最大时钟速度,BIOS制造商、版本、序列号和发布日期,硬盘模型、制造商及物理属性,以及主板制造商、名称、序列号等关键数据。这些信息对于创建基于硬件的软件授权文件至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们有时遇到安装软件需要授权文件,就是利用电脑的硬件信息,来创建的授权文件的。加密和解密是很复杂的,可以独立一篇文章介绍一下,本文具体介绍C#获取电脑硬件信息,例如CPU信息,硬盘信息,RAM信息,主板信息等。

获取CPU信息:

_ProcessorId: BFEBFBFF000806EC
_

Name: Intel® Core™ i5-10210U CPU @ 1.60GHz

Manufacturer: GenuineIntel

MaxClockSpeed: 2112

实现方法如下:

using System.Management;// 添加引用

private static string Identifier(string wmiClass, string wmiPropert)

{

string str = “”;

ManagementClass Mcls = new ManagementClass(wmiClass);

foreach (ManagementObject obj in Mcls.GetInstances())

{

try

{

if (obj[wmiPropert] != null)

{

str = obj[wmiPropert].ToString();

}

return str;

}

catch (Exception)

{

}

}

return str;

}

测试上方法:

Identifier(“Win32_Processor”, “Name”);

返回字符串:Intel® Core™ i5-10210U CPU @ 1.60GHz

Identifier(“Win32_Processor”, “ProcessorId”);

返回字符串:BFEBFBFF000806EC

Identifier(“Win32_Processor”, “Manufacturer”);

返回字符串:GenuineIntel

Identifier(“Win32_Processor”, “MaxClockSpeed”);

返回字符串:2112

BIOS信息:

_Manufacturer: LENOVO
_

SMBIOSBIOSVersion: N2XET29W (1.19 )

SerialNumber: PF2XADPM

ReleaseDate:20210323000000.000000+000

Version: LENOVO - 1190

测试代码如下:

string s1 = Identifier(“Win32_BIOS”, “Manufacturer”);

if (s1 != “”)

ShowMessage("Manufacturer: " + s1);

string s2 = Identifier(“Win32_BIOS”, “SMBIOSBIOSVersion”);

if (s2 != “”)

ShowMessage("SMBIOSBIOSVersion: " + s2);

string s3 = Identifier(“Win32_BIOS”, “IdentificationCode”);

if (s3 != “”) //这个字段返回为空

ShowMessage("IdentificationCode: " + s3);

string s4 = Identifier(“Win32_BIOS”, “SerialNumber”);

if (s4 != “”)

ShowMessage("SerialNumber: " + s4);

string s5 = Identifier(“Win32_BIOS”, “ReleaseDate”);

if (s5 != “”)

ShowMessage(“ReleaseDate:” + s5);

string s6 = Identifier(“Win32_BIOS”, “Version”);

if (s6 != “”)

ShowMessage("Version: " + s6);

硬盘信息:

_Model: INTEL HBRPEKNX0202AL
_

Manufacturer: (标准磁盘驱动器)

Signature: 0

TotalHeads: 255

封装的方法如下:

static ManagementObjectCollection GetIdentifierCollection(string wmiClass)

{

ManagementClass cls = new ManagementClass(wmiClass);

return cls.GetInstances();

}

//单独列出来,避免USB Disk计算在内

static string GetDiskIdentifier(ManagementObjectCollection moc, string wmiProperty)

{

string s = “”;

foreach (ManagementObject obj in moc)

{

if ((obj[“InterfaceType”] == null) || (obj[“InterfaceType”].ToString() != “USB”))

{

try

{

if (obj[wmiProperty] != null)

{

s = obj[wmiProperty].ToString();

}

}

catch (Exception)

{

}

}

}

return s;

}

测试代码如下:

ManagementObjectCollection mocs = GetIdentifierCollection(“Win32_DiskDrive”);

string s1 = GetDiskIdentifier(mocs, “Model”);

if (s1 != “”)

ShowMessage("Model: " + s1);

string s2 = GetDiskIdentifier(mocs, “Manufacturer”);

if (s2 != “”)

ShowMessage("Manufacturer: " + s2);

string s3 = GetDiskIdentifier(mocs, “Signature”);

if (s3 != “”)

ShowMessage("Signature: " + s3);

string s4 = GetDiskIdentifier(mocs, “TotalHeads”);

if (s4 != “”)

ShowMessage("TotalHeads: " + s4);

核心是封装的函数,这个可以更具自己的需求做更改,下面的测试代码是验证功能函数获取硬件信息的。

获取主板信息:

_Manufacturer: LENOVO
_

Name: 基板

SerialNumber: L1HF15D03J2

功能函数如下:

ManagementObjectCollection Mocs = GetIdentifierCollection(“Win32_BaseBoard”);

string firstIdentifier = GetFirstIdentifier(Mocs, “Model”);

if (firstIdentifier != “”)

ShowMessage("Model: " + firstIdentifier);

string s1 = GetFirstIdentifier(Mocs, “Manufacturer”);

if (s1 != “”)

ShowMessage("Manufacturer: " + s1);

string s2 = GetFirstIdentifier(Mocs, “Name”);

if (s2 != “”)

ShowMessage("Name: " + s2);

string s3 = GetFirstIdentifier(Mocs, “SerialNumber”);

if (s3 != “”)

ShowMessage("SerialNumber: " + s3);

获取主板的制造商,主板序列号,主板名称,这信息都很有用的,电脑出厂后,这些信息不换硬件,是不会改变的。利用这些信息创建的授权码都是依赖这个硬件信息计数出一个加密序列码的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值