C#获取网卡MAC地址和CPU序列号

计算机上有一些唯一的标志符,比如网卡MAC地址,CPU序列号,硬盘序列等。有时候为了开发授权码或者注册码,需要根据具体计算机进行授权,这是就需要获取这些唯一标识信息了。

首先,是网卡MAC地址的获取。网卡其实有很多种类,常见的有以太网卡(Ethernet),还有无线网卡(802.11),其他不常见的什么令牌环网啊,名字很长很难懂的那些,就不在本文讨论范围之内了。另外,还有一种比较常见的,隧道类型的网卡,一般虚拟机(VMware)之类的网卡就是这种类型。那么,怎么获取呢?有两种方式,第一种,通过 NetWorkInterface 类进行获取,能拿到很多信息,例如网卡类型,网卡描述,网卡名称,当然,还有MAC地址;第二种,通过 ManagementObjectSearcher 类进行获取,这个类后面还会用来获取CPU序列号,很强大,几乎所有设备资源都能够获取,但是比较容易出错。先来看看第一种,通过 NetWorkInterface 类进行获取:

//这里使用 NetworkInterface 获取网络设备信息,能够直接获取网络设备类型,描述,名称等信息
NetworkInterface[] allNetWork = NetworkInterface.GetAllNetworkInterfaces();
if(allNetWork.Length > 0)
{
    foreach (var item in allNetWork)
    {
        //这里只获取以太网卡的mac地址
		if (item.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
		{
			//对MAC地址加上网卡名称,方便进行对应和选择
			string strInfo = item.GetPhysicalAddress().ToString() + $"({item.Name})";
		}
	}
else
{
	MessageBox.Show("找不到可用的网卡!");
}

这里由于网卡可能会有多个,所以我给MAC地址加上网卡的名字,方便进行对应。

然后来看另外一种方式:

try
{
	ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM         
 Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))");
	
    string NetCardMACAddress = "";
	foreach (ManagementObject mo in searcher.Get())
	{
		NetCardMACAddress = mo["MACAddress"].ToString().Trim();
	}
}
catch
{
}

其实这种方式是通过WMI接口进行查询,所以能够获取很多设备信息,但是由于要写查询语句,所以容易出错。个人还是倾向于第一种。

然后再来看下CPU序列号的获取方式。通过 ManagementClass 类进行获取,这个类需要给项目添加引用 System.Management 才可以使用。在使用结束后需要进行析构,然后会造成资源的浪费,以及影响下次的创建和使用。来看代码:

ManagementClass mcCPU = new ManagementClass("Win32_Processor");
ManagementObjectCollection mocCPU = mcCPU.GetInstances();
if(mocCPU.Count == 1)
{
	foreach(var item in mocCPU)
	{
		var cpuId = item.Properties["ProcessorId"].Value.ToString();
	}
}
else
{
	string strInfo = "CPU个数为:" + mocCPU.Count.ToString() + ",无法正常获取!";
	MessageBox.Show(strInfo);
}
//使用完毕之后需要析构,避免资源的浪费
mcCPU.Dispose();
mocCPU.Dispose();

OK,到这里就完成了 MAC地址和CPU序列号的获取。代码下载地址:https://download.csdn.net/download/kakaluote81/12254967

猜你喜欢

转载自blog.csdn.net/kakaluote81/article/details/104945471
今日推荐