微信公众号“Net分享”的文章《Net跨平台硬件信息查询库 Hardware.Info:全面获取系统硬件详情》(参考文献1)介绍了开源C#硬件信息查询库Hardware.Info,该库支持查询电池、BIOS、CPU、内存、显示器、主板、网卡、声卡、显卡等信息,采用的技术包括:
1)Windows:WMI;
2)Linux:/dev, /proc, /sys;
3)macOS:sysctl, system_profiler。
参考文献1中的GitHub地址好像已经失效,在测试项目中添加Nuget包时找到了最新的地址(参考文献2),通过查看项目说明,应该就是文章中使用的包。
VS2022中新建Winform项目,在Nuget包管理器中搜索并安装Hardware.Info包。
主要使用HardwareInfo类获取各类硬件信息,该类的构造函数内部根据操作系统不同实例化相应的信息获取类,不过这些类都是internal,无法直接调用(有需要的话可以直接复制源代码)。
主要用到的函数及属性如下表所示:
序号 | 名称 | 类型 | 说明 |
---|---|---|---|
1 | BatteryList | 属性 | 获取本机所有电池信息,每个电池(Battery类)包括设计容量、电池状态 、预计剩余使用时间等数据 |
2 | BiosList | 属性 | 获取本机所有的BIOS信息,每个BIOS(BIOS类)包括名称、制造商、序列号、版本等数据 |
3 | ComputerSystemList | 属性 | 获取本机所有的操作系统信息,每个操作系统(ComputerSystem类)包括名称、厂商、版本、识别码、产品编号等数据 |
4 | DriveList | 属性 | 获取本机所有的硬盘信息,每个硬盘(Drive类)包括固件版本、制造商、序列号、分区数量、分区集合(Partition)等数据 |
5 | GetLocalIPv4Addresses | 函数 | 获取本机所有IPv4信息,返回IPAddress类集合,该类位于System.Net命名空间 |
6 | KeyboardList | 属性 | 获取本机所有键盘信息,每个键盘(Keyboard类)包括名称、功能键数量、描述等数据 |
7 | MemoryList | 属性 | 获取本机所有物理内存信息,每个内存条(Memory类)包括制造商、最大/最小电压、序列号、容量、读写速度等数据 |
8 | MemoryStatus | 属性 | 获取当前系统内存信息,包括物理内存大小、可用物理内存大小、虚拟内存大小、可用虚拟内存大小等数据 |
9 | MonitorList | 属性 | 获取本机所有显示器信息,每个显示器(Monitor类)包括名称、类型、制造商、分辨率、序列号等数据 |
10 | MotherboardList | 属性 | 获取本机所有主板信息,每个主板(Motherboard类)包括制造商、序列号等数据 |
11 | MouseList | 属性 | 获取本机所有鼠标信息,每个鼠标(Mouse类)包括名称、制造商、按钮数据、描述等数据 |
12 | NetworkAdapterList | 属性 | 获取本机所有网卡信息,每个网卡(NetworkAdapter类)包括名称、类型、制造商、mac地址等数据 |
13 | OperatingSystem | 属性 | 获取当前操作系统信息,包括名称、版本等数据 |
14 | PrinterList | 属性 | 获取本地所有打印机信息,每个打印机(Printer类)包括名称、描述、分辨率、是否默认打印机、是否本地打印机等数据 |
15 | RefreshAll | 函数 | 刷新所有硬件信息 |
16 | RefreshBatteryList | 函数 | 刷新电池信息 |
17 | RefreshBIOSList | 函数 | 刷新BIOS信息 |
18 | RefreshComputerSystemList | 函数 | 刷新操作系统信息 |
19 | RefreshCPUList | 函数 | 刷新CPU信息 |
20 | RefreshDriveList | 函数 | 刷新银盘信息 |
21 | RefreshKeyboardList | 函数 | 刷新键盘信息 |
22 | RefreshMemoryList | 函数 | 刷新内存条信息 |
23 | RefreshMemoryStatus | 函数 | 刷新当前系统内存信息 |
24 | RefreshMonitorList | 函数 | 刷新显示器信息 |
25 | RefreshMotherboardList | 函数 | 刷新主板信息 |
26 | RefreshMouseList | 函数 | 刷新鼠标信息 |
27 | RefreshNetworkAdapterList | 函数 | 刷新网卡信息 |
28 | RefreshOperatingSystem | 函数 | 刷新当前操作系统信息 |
29 | RefreshPrinterList | 函数 | 刷新打印机信息 |
30 | RefreshSoundDeviceList | 函数 | 刷新声卡信息 |
31 | RefreshVideoControllerList | 函数 | 刷新显卡信息 |
32 | SoundDeviceList | 属性 | 获取本机声卡信息,每个声卡(SoundDevice类)包括名称、描述、制造商等数据 |
33 | VideoController | 属性 | 获取本机视频控制器信息,每个视频控制器(VideoController类)包括名称、制造商、最大/最小刷新频率、当前分辨率等数据 |
测试代码比较简单就不在此列出,总体而言,Hardware.Info库使用简单方便,值得使用。另外GitHub主页中还列出了几个Windows中的使用问题,有遇到的可以参考解决。
参考文献:
[1]https://www.cnblogs.com/netcore5/p/18711795
[2]https://github.com/Jinjinov/Hardware.Info