今天我们向您展示如何使用 C# 获取计算机硬件信息。您可以获取您的系统信息,如处理器 ID、硬盘序列号、系统 MAC 地址、主板制造商、主板产品 ID、CD-DVD 驱动器路径、BIOS 制造商、BIOS 序列号、BIOS 标题、系统帐户名称、物理 RAM 内存, 主板上的 RAM 插槽编号, CPU 制造商, CPU 的当前时钟速度, 默认 IP 网关, CPU 速度, 获取当前语言, 系统信息, 处理器信息, 获取计算机名称。

以下是使用 C# 获取计算机硬件信息的步骤

创建一个 Windows 窗体应用程序

如果您熟悉 Windows 窗体,那么您非常了解如何创建 Windows 窗体应用程序。
了解更多:如何在 VISUAL STUDIO 2010 中创建 WINDOWS 窗体应用程序

添加参考

添加“ System.Management ”的引用以使用C#获取计算机硬件信息。
请参见下图以在项目中添加参考。

添加参考

添加“System.Management”的引用

添加类文件

您可能会阅读:将参数从一个窗口传递到另一个窗口 c#

在您的项目中将类文件名添加为“ HardwareInfo.cs ”。在您的类文件中添加以下代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;public static class HardwareInfo
{////// Retrieving Processor Id./// /// /// public static String GetProcessorId(){ManagementClass mc = new ManagementClass("win32_processor");ManagementObjectCollection moc = mc.GetInstances();String Id = String.Empty;foreach (ManagementObject mo in moc){Id = mo.Properties["processorID"].Value.ToString();break;}return Id;}////// Retrieving HDD Serial No./// /// public static String GetHDDSerialNo(){ManagementClass mangnmt = new ManagementClass("Win32_LogicalDisk");ManagementObjectCollection mcol = mangnmt.GetInstances();string result = "";foreach (ManagementObject strt in mcol){result += Convert.ToString(strt["VolumeSerialNumber"]);}return result;}////// Retrieving System MAC Address./// /// public static string GetMACAddress(){ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc = mc.GetInstances();string MACAddress = String.Empty;foreach (ManagementObject mo in moc){if (MACAddress == String.Empty){if ((bool)mo["IPEnabled"] == true) MACAddress = mo["MacAddress"].ToString();}mo.Dispose();}MACAddress = MACAddress.Replace(":", "");return MACAddress;}////// Retrieving Motherboard Manufacturer./// /// public static string GetBoardMaker(){ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BaseBoard");foreach (ManagementObject wmi in searcher.Get()){try{return wmi.GetPropertyValue("Manufacturer").ToString();}catch { }}return "Board Maker: Unknown";}////// Retrieving Motherboard Product Id./// /// public static string GetBoardProductId(){ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BaseBoard");foreach (ManagementObject wmi in searcher.Get()){try{return wmi.GetPropertyValue("Product").ToString();}catch { }}return "Product: Unknown";}////// Retrieving CD-DVD Drive Path./// /// public static string GetCdRomDrive(){ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_CDROMDrive");foreach (ManagementObject wmi in searcher.Get()){try{return wmi.GetPropertyValue("Drive").ToString();}catch { }}return "CD ROM Drive Letter: Unknown";}////// Retrieving BIOS Maker./// /// public static string GetBIOSmaker(){ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS");foreach (ManagementObject wmi in searcher.Get()){try{return wmi.GetPropertyValue("Manufacturer").ToString();}catch { }}return "BIOS Maker: Unknown";}////// Retrieving BIOS Serial No./// /// public static string GetBIOSserNo(){ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS");foreach (ManagementObject wmi in searcher.Get()){try{return wmi.GetPropertyValue("SerialNumber").ToString();}catch { }}return "BIOS Serial Number: Unknown";}////// Retrieving BIOS Caption./// /// public static string GetBIOScaption(){ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS");foreach (ManagementObject wmi in searcher.Get()){try{return wmi.GetPropertyValue("Caption").ToString();}catch { }}return "BIOS Caption: Unknown";}////// Retrieving System Account Name./// /// public static string GetAccountName(){ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_UserAccount");foreach (ManagementObject wmi in searcher.Get()){try{return wmi.GetPropertyValue("Name").ToString();}catch { }}return "User Account Name: Unknown";}////// Retrieving Physical Ram Memory./// /// public static string GetPhysicalMemory(){ManagementScope oMs = new ManagementScope();ObjectQuery oQuery = new ObjectQuery("SELECT Capacity FROM Win32_PhysicalMemory");ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery);ManagementObjectCollection oCollection = oSearcher.Get();long MemSize = 0;long mCap = 0;// In case more than one Memory sticks are installedforeach (ManagementObject obj in oCollection){mCap = Convert.ToInt64(obj["Capacity"]);MemSize += mCap;}MemSize = (MemSize / 1024) / 1024;return MemSize.ToString() + "MB";}////// Retrieving No of Ram Slot on Motherboard./// /// public static string GetNoRamSlots(){int MemSlots = 0;ManagementScope oMs = new ManagementScope();ObjectQuery oQuery2 = new ObjectQuery("SELECT MemoryDevices FROM Win32_PhysicalMemoryArray");ManagementObjectSearcher oSearcher2 = new ManagementObjectSearcher(oMs, oQuery2);ManagementObjectCollection oCollection2 = oSearcher2.Get();foreach (ManagementObject obj in oCollection2){MemSlots = Convert.ToInt32(obj["MemoryDevices"]);}return MemSlots.ToString();}//Get CPU Temprature.////// method for retrieving the CPU Manufacturer/// using the WMI class/// /// CPU Manufacturerpublic static string GetCPUManufacturer(){string cpuMan = String.Empty;//create an instance of the Managemnet class with the//Win32_Processor classManagementClass mgmt = new ManagementClass("Win32_Processor");//create a ManagementObjectCollection to loop throughManagementObjectCollection objCol = mgmt.GetInstances();//start our loop for all processors foundforeach (ManagementObject obj in objCol){if (cpuMan == String.Empty){// only return manufacturer from first CPUcpuMan = obj.Properties["Manufacturer"].Value.ToString();}}return cpuMan;}////// method to retrieve the CPU's current/// clock speed using the WMI class/// /// Clock speedpublic static int GetCPUCurrentClockSpeed(){int cpuClockSpeed = 0;//create an instance of the Managemnet class with the//Win32_Processor classManagementClass mgmt = new ManagementClass("Win32_Processor");//create a ManagementObjectCollection to loop throughManagementObjectCollection objCol = mgmt.GetInstances();//start our loop for all processors foundforeach (ManagementObject obj in objCol){if (cpuClockSpeed == 0){// only return cpuStatus from first CPUcpuClockSpeed = Convert.ToInt32(obj.Properties["CurrentClockSpeed"].Value.ToString());}}//return the statusreturn cpuClockSpeed;}////// method to retrieve the network adapters/// default IP gateway using WMI/// /// adapters default IP gatewaypublic static string GetDefaultIPGateway(){//create out management class object using the//Win32_NetworkAdapterConfiguration class to get the attributes//of the network adapterManagementClass mgmt = new ManagementClass("Win32_NetworkAdapterConfiguration");//create our ManagementObjectCollection to get the attributes withManagementObjectCollection objCol = mgmt.GetInstances();string gateway = String.Empty;//loop through all the objects we findforeach (ManagementObject obj in objCol){if (gateway == String.Empty)  // only return MAC Address from first card{//grab the value from the first network adapter we find//you can change the string to an array and get all//network adapters found as well//check to see if the adapter's IPEnabled//equals trueif ((bool)obj["IPEnabled"] == true){gateway = obj["DefaultIPGateway"].ToString();}}//dispose of our objectobj.Dispose();}//replace the ":" with an empty space, this could also//be removed if you wishgateway = gateway.Replace(":", "");//return the mac addressreturn gateway;}////// Retrieve CPU Speed./// /// public static double? GetCpuSpeedInGHz(){double? GHz = null;using (ManagementClass mc = new ManagementClass("Win32_Processor")){foreach (ManagementObject mo in mc.GetInstances()){GHz = 0.001 * (UInt32)mo.Properties["CurrentClockSpeed"].Value;break;}}return GHz;}////// Retrieving Current Language/// /// public static string GetCurrentLanguage(){ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS");foreach (ManagementObject wmi in searcher.Get()){try{return wmi.GetPropertyValue("CurrentLanguage").ToString();}catch { }}return "BIOS Maker: Unknown";}////// Retrieving Current Language./// /// public static string GetOSInformation(){ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");foreach (ManagementObject wmi in searcher.Get()){try{return ((string)wmi["Caption"]).Trim() + ", " + (string)wmi["Version"] + ", " + (string)wmi["OSArchitecture"];}catch { }}return "BIOS Maker: Unknown";}////// Retrieving Processor Information./// /// public static String GetProcessorInformation(){ManagementClass mc = new ManagementClass("win32_processor");ManagementObjectCollection moc = mc.GetInstances();String info = String.Empty;foreach (ManagementObject mo in moc){string name = (string)mo["Name"];name = name.Replace("(TM)", "™").Replace("(tm)", "™").Replace("(R)", "®").Replace("(r)", "®").Replace("(C)", "©").Replace("(c)", "©").Replace("    ", " ").Replace("  ", " ");info = name + ", " + (string)mo["Caption"] + ", " + (string)mo["SocketDesignation"];//mo.Properties["Name"].Value.ToString();//break;}return info;}////// Retrieving Computer Name./// /// public static String GetComputerName(){ManagementClass mc = new ManagementClass("Win32_ComputerSystem");ManagementObjectCollection moc = mc.GetInstances();String info = String.Empty;foreach (ManagementObject mo in moc){info = (string)mo["Name"];//mo.Properties["Name"].Value.ToString();//break;}return info;}}

设计窗口形式

请参见下图设计您的 Windows 窗体并生成按钮单击事件以使用 C# 获取计算机硬件信息。

设计形式

添加代码隐藏源

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace HardwareInformation
{public partial class HardwareInfo_CodeScratcher : Form{public HardwareInfo_CodeScratcher(){InitializeComponent();}private void HardwareInfo_CodeScratcher_Load(object sender, EventArgs e){}private void ProcId_Click(object sender, EventArgs e){lblPid.Text = HardwareInfo.GetProcessorId();}private void HDDSNo_Click(object sender, EventArgs e){lblHDD.Text = HardwareInfo.GetHDDSerialNo();}private void BoardMake_Click(object sender, EventArgs e){lblBM.Text = HardwareInfo.GetBoardMaker();}private void BIOSMkr_Click(object sender, EventArgs e){lblBios.Text = HardwareInfo.GetBIOSmaker();}private void PhysicalMem_Click(object sender, EventArgs e){lblPM.Text = HardwareInfo.GetPhysicalMemory();}private void CPUSpeed_Click(object sender, EventArgs e){lblCS.Text = HardwareInfo.GetCpuSpeedInGHz().ToString();}private void CPUMkr_Click(object sender, EventArgs e){lblCM.Text = HardwareInfo.GetCPUManufacturer();}}
}

运行项目并检查最终输出

硬件信息 - 输出

使用 C# 获取计算机硬件信息相关推荐

  1. Qt获取计算机硬件信息(主板唯一识别码)

    Windows下获取CPU.主板.硬盘等电脑相关硬件的办法很多,可以直接调用Windows API的方式实现,不过代码都很复杂,不容易理解.这里使用一种很简便的方式来查询我们需要的信息,先了解一个东西 ...

  2. 【小沐学C++】C++获取计算机硬件信息(Linux)

    C++获取计算机硬件信息(Windows) https://blog.csdn.net/hhy321/article/details/121258036 C++获取计算机硬件信息(Linux) htt ...

  3. python实现获取计算机硬件信息并写入excel

    运行环境:python3.8.3.sublime txt 直接上代码: import xlrd import xlwt from xlutils.copy import copy import wmi ...

  4. C#获取计算机硬件信息 实现代码

    调用方法: smart_common_plus.HardwareHandler.HardwareHandlerinfo hd = new smart_common_plus.HardwareHandl ...

  5. 如何用cmd看计算机硬件配置,如何通过命令行获取计算机硬件详细信息

    你可能会有很多的原因需要查清计算机硬件的详细信息.例如,你需要修复某些问题并在论坛上发出请求,人们可能会立即询问你的计算机具体的信息.或者当你想要升级计算机配置时,你需要知道现有的硬件型号和能够升级的 ...

  6. 在线检测计算机硬件信息,JS获取客户端计算机硬件信息与系统信息大全

    var info = allinfo(); document.write(info); var locator = new ActiveXObject ("WbemScripting.SWb ...

  7. C#获得计算机硬件信息和操作系统信息

    获取电脑的一些硬件信息 前言 一.准备 二.获取硬件信息 1.获取CPU序列号 2.获取主板序列号 3.获取硬盘序列号 4.获取网卡地址 总结 常见Key值 参考引用 前言 项目代码中有关于获取Fir ...

  8. uniapp同步获取用户信息_微信小程序云开发教程微信小程序的API入门获取用户身份信息系列API...

    同学们大家好,我是小伊同学,上一节我们介绍了一些常用API,今天我们接着来学习一组API,那就是获取用户身份信息的API. 在微信小程序中,我们往往需要获取用户的身份信息,比如昵称.头像.性别.地区等 ...

  9. 微信小程序如何进行登录授权和获取用户信息

    微信小程序如何进行登录授权和获取用户信息

最新文章

  1. 探索JAVA并发 - 并发容器全家福!
  2. python安装失败0x80070570_固态硬盘装win7出现错误代码0x80070570怎么办
  3. [转] Apache日志分析常用Shell命令
  4. 高效研发运维体系构建的流程和方法论
  5. Linux常用命令参考手册02
  6. 大学数学实验习题--统计推断 03(附答案)
  7. 6.S081 Xv6 Lab 2: system calls
  8. 酷我音乐android2.0,酷我音乐2012 2.0.0(For iphone)享受听歌“零“消费
  9. 学习装黑苹果的正确姿势(小白适用)
  10. linux 终端翻译,linux下终端使用有道翻译
  11. Android8怎么格式化内存卡,安卓手机内存卡无法格式化怎么办【解方法决】
  12. mellanox在vmware中的切割
  13. [docker]九、compose是什么?有什么用?以及用compose启动web、redis和wordpress
  14. 三角警示牌emark认证详解
  15. Python多态与鸭子类型
  16. Typora护眼绿和夜色两种背景
  17. 一个物体的固有频率有几个?
  18. 内网后渗透,生成免杀后门!!
  19. 内部岗位竞聘报告PPT模板-优页文档
  20. gb28181简单实现sip信令服务器(java版基于springboot):四、sip摄像头心跳保活、推流(tcp/udp)和结束推流

热门文章

  1. do-while,if-else:迷你游戏平台,晋级
  2. 163邮箱哪个安全好用?常用的电子邮箱品牌有哪些?
  3. DeepLinQ 用于隐私保护的数据共享的分布式多层分类账本
  4. opencv 的pyramid down函数verilog实现
  5. 七步教你制定网站SEO整体优化方案
  6. 一个未知的项目被声明为你的MXML文件的根。切换到源代码模式加以纠正。
  7. 大数据——Flume安装配置和使用
  8. 一个爬虫练习游戏:黑板课爬虫闯关
  9. android调用fragment的方法,Android Fragment基本使用
  10. 一个等号= 二个等号== 三个等号=== 的区别