C# 通过WMI接口获取硬件ID

WMI(Windows Management Instrumentation)是一种用于管理和监控Windows操作系统的技术和接口。它提供了一种标准化的方式来获取和操作Windows操作系统的各种系统信息、配置设置、性能数据和事件日志等。

通过WMI,开发人员可以使用各种编程语言(如C#, VB.NET, PowerShell)来查询和修改操作系统的各种属性和状态。WMI通过提供一组对象模型和命名空间来表示操作系统中的各个组件和功能,开发人员可以使用这些对象和命名空间来访问和操作系统中的各种资源。

使用WMI,开发人员可以执行诸如以下操作:

  • 查询系统信息:获取操作系统版本、计算机硬件配置、网络设置等信息。
  • 监控系统性能:获取CPU、内存、磁盘和网络等资源的使用情况和性能指标。
  • 管理进程和服务:启动、停止、查询和控制正在运行的进程和服务。
  • 配置和管理设备:查询和配置硬件设备的属性和状态。
  • 处理事件和日志:订阅和处理系统事件和日志消息。

WMI提供了一种强大而灵活的方式来管理和监控Windows操作系统,使开发人员能够编写自动化脚本、系统管理工具和监控应用程序,从而简化管理任务、提高效率并实现系统的自动化管理。

如下代码定义了一个名为HardWareInfo的类,该类包含了一些静态方法用于获取硬件信息。

  • GetCpuId方法用于获取CPU的ID,通过使用ManagementObjectSearcher类和WMI查询,获取计算机的处理器信息,然后提取出处理器的ID作为CPUID。

  • GetDiskSerialNumber方法用于获取硬盘的序列号,使用ManagementObjectSearcher类和WMI查询,获取计算机的硬盘驱动器信息,然后提取出序列号作为硬盘序列号。

  • GetDiskModelNumber方法用于获取硬盘的产品型号,同样使用ManagementObjectSearcher类和WMI查询,获取硬盘驱动器信息,然后提取出型号作为硬盘产品型号。

  • GetMacAddress方法用于获取网卡的MAC地址,通过查询网络适配器配置信息,找到启用IP的网卡,并提取出MAC地址。

  • GetIpAddress方法用于获取本机的IP地址,同样通过查询网络适配器配置信息,找到启用IP的网卡,并提取出IP地址。

  • GetBIOSSerialNumber方法用于获取主板的序列号,使用ManagementObjectSearcher类和WMI查询,获取主板的BIOS信息,然后提取出序列号作为主板序列号。

这些方法使用了ManagementObjectSearcher类和WMI查询来获取硬件信息,然后通过属性值的提取来获得具体的信息。请注意,这些方法可能需要管理员权限才能访问某些敏感信息。

class HardWareInfo
{
	/// <summary>
	/// 获取 CPUID , 更多 cpu 信息参考
	/// </summary>
	/// <returns> cpuid </returns>
	public static string GetCpuId()
	{
		string cpuid = "";
 
		try
		{
			ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Processor");
			foreach (ManagementObject mo in searcher.Get())
			{
				cpuid = mo.Properties["ProcessorId"].Value.ToString();
 
				break;
			}
		}
		catch
		{
 
		}
 
		return cpuid;
	}
 
	/// <summary>
	/// 获取硬盘序列号
	/// </summary>
	/// <returns> 硬盘序列号 </returns>
	public static string GetDiskSerialNumber()
	{
		string HDid = "";
 
		try
		{
			ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_DiskDrive");
			foreach (ManagementObject mo in searcher.Get())
			{
				HDid = (string)mo.Properties["SerialNumber"].Value;
 
				break;
			}
		}
		catch
		{
 
		}
 
		return HDid;
	}
	
	/// <summary>
	/// 获取硬盘产品型号
	/// </summary>
	/// <returns>硬盘产品型号</returns>
	public static string GetDiskModelNumber()
	{
		string HDid = "";
 
		try
		{
			ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_DiskDrive");
			foreach (ManagementObject mo in searcher.Get())
			{
				HDid = (string)mo.Properties["Model"].Value;
 
				break;
			}
		}
		catch
		{
 
		}
		
		return HDid;
	}
 
	/// <summary>
	/// 获取 Mac 地址 ,更多网卡信息参考 :
	/// </summary>
	/// <returns> Mac 地址 </returns>
	public static string GetMacAddress()
	{
		string mac = "";
 
		try
		{
			ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_NetworkAdapterConfiguration");
			foreach (ManagementObject mo in searcher.Get())
			{
				if ((bool)mo["IPEnabled"] == true)
				{
					mac = mo["MacAddress"].ToString();
 
					break;
				}
			}
		}
		catch
		{
 
		}
		
		return mac;
	}
 
	/// <summary>
	/// 获取 ip 地址
	/// </summary>
	/// <returns> ip 地址 </returns>
	public static string GetIpAddress()
	{
		string st = "";
 
		try
		{
			ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_NetworkAdapterConfiguration");
			foreach (ManagementObject mo in searcher.Get())
			{
				if ((bool)mo["IPEnabled"] == true)
				{
					System.Array ar;
					ar = (System.Array)(mo.Properties["IpAddress"].Value);
					st = ar.GetValue(0).ToString();
 
					break;
				}
			}
		}
		catch
		{
 
		}
		
		return st;
	}
 
	/// <summary>
	/// 获取主板序列号
	/// </summary>
	/// <returns> 主板序列号 </returns>
	public static string GetBIOSSerialNumber()
	{
		string sBIOSSerialNumber = "";
 
		try
		{
			ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_BIOS");
			foreach (ManagementObject mo in searcher.Get())
			{
				sBIOSSerialNumber = mo.GetPropertyValue("SerialNumber").ToString().Trim();
 
				break;
			}
		}
		catch
		{
 
		}
 
		return sBIOSSerialNumber;
	}
 
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值