Net跨平台硬件信息查询库 Hardware.Info:全面获取系统硬件详情

news/2025/2/13 9:46:13/

Hardware.Info 是一个基于 .NET Standard 2.0 的跨平台库,提供了硬件信息查询的功能,支持 Windows、Linux 和 macOS 操作系统。该库通过不同平台下的系统接口获取硬件信息,包括电池、电池管理、BIOS、CPU、存储驱动、键盘、内存、显示器、主板、鼠标、网络适配器、打印机、声音卡、显卡等硬件组件的详细数据。

主要特点

跨平台支持
  • Windows:使用 Windows Management Instrumentation(WMI)来获取硬件信息。
  • Linux:通过 /dev/proc/sys 文件系统来访问硬件信息。
  • macOS:利用 sysctlsystem_profiler 命令来查询硬件数据。
获取硬件信息
  • 电池信息:当前电池状态、容量、充电状态等。
  • BIOS:BIOS 版本、厂商等信息。
  • CPU 处理器:包括处理器型号、架构、核心数量、频率等详细信息。
  • 存储驱动:磁盘驱动器型号、容量、状态等。
  • 内存:系统内存容量、使用情况等。
  • 显示器:分辨率、颜色深度、刷新率等。
  • 网络适配器:包括网络接口卡的速度、MAC 地址、IP 地址等。
  • 显卡:显卡型号、内存、驱动信息等。

获取硬件信息

第一步,老规矩,先安装

Install-Package Hardware.Info
using Hardware.Info;
using System.Net.NetworkInformation;static IHardwareInfo hardwareInfo;
static void Main(string[] args)
{try{hardwareInfo = new HardwareInfo();//hardwareInfo.RefreshOperatingSystem();//.....//刷新所有硬件信息hardwareInfo.RefreshAll();}catch (Exception ex){Console.WriteLine(ex);}Console.WriteLine("输出操作系统信息" + Environment.NewLine);Console.WriteLine(hardwareInfo.OperatingSystem);Console.WriteLine("输出内存状态信息" + Environment.NewLine);Console.WriteLine(hardwareInfo.MemoryStatus);Console.WriteLine("输出电池信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.BatteryList)Console.WriteLine(hardware);Console.WriteLine("输出 BIOS 信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.BiosList)Console.WriteLine(hardware);Console.WriteLine("输出计算机系统信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.ComputerSystemList)Console.WriteLine(hardware);Console.WriteLine("输出 CPU 信息" + Environment.NewLine);foreach (var cpu in hardwareInfo.CpuList){Console.WriteLine(cpu);Console.WriteLine("输出 CPU 核心信息" + Environment.NewLine);foreach (var cpuCore in cpu.CpuCoreList)Console.WriteLine(cpuCore);}Console.WriteLine("输出磁盘驱动器信息" + Environment.NewLine);foreach (var drive in hardwareInfo.DriveList){Console.WriteLine(drive);Console.WriteLine("输出驱动器分区信息" + Environment.NewLine);foreach (var partition in drive.PartitionList){Console.WriteLine(partition);Console.WriteLine("输出分区卷信息" + Environment.NewLine);foreach (var volume in partition.VolumeList)Console.WriteLine(volume);}}Console.WriteLine("输出键盘信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.KeyboardList)Console.WriteLine(hardware);Console.WriteLine("输出内存信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.MemoryList)Console.WriteLine(hardware);Console.WriteLine("输出显示器信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.MonitorList)Console.WriteLine(hardware);Console.WriteLine("输出主板信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.MotherboardList)Console.WriteLine(hardware);Console.WriteLine("输出鼠标信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.MouseList)Console.WriteLine(hardware);Console.WriteLine("输出网络适配器信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.NetworkAdapterList)Console.WriteLine(hardware);Console.WriteLine("输出打印机信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.PrinterList)Console.WriteLine(hardware);Console.WriteLine("输出声音设备信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.SoundDeviceList)Console.WriteLine(hardware);Console.WriteLine("输出显卡信息" + Environment.NewLine);foreach (var hardware in hardwareInfo.VideoControllerList)Console.WriteLine(hardware);Console.WriteLine("输出 Ethernet 类型并且状态为 Up 的本地 IPv4 地址" + Environment.NewLine);foreach (var address in HardwareInfo.GetLocalIPv4Addresses(NetworkInterfaceType.Ethernet, OperationalStatus.Up))Console.WriteLine(address);Console.WriteLine();Console.WriteLine("输出 Wireless80211 类型的本地 IPv4 地址" + Environment.NewLine);foreach (var address in HardwareInfo.GetLocalIPv4Addresses(NetworkInterfaceType.Wireless80211))Console.WriteLine(address);Console.WriteLine();Console.WriteLine("输出状态为 Up 的网络接口卡的本地 IPv4 地址" + Environment.NewLine);foreach (var address in HardwareInfo.GetLocalIPv4Addresses(OperationalStatus.Up))Console.WriteLine(address);Console.WriteLine();Console.WriteLine("输出所有网络接口卡的本地 IPv4 地址" + Environment.NewLine);foreach (var address in HardwareInfo.GetLocalIPv4Addresses())Console.WriteLine(address);Console.WriteLine();Console.WriteLine("输出计算机当前时间" + Environment.NewLine);Console.WriteLine(DateTime.Now);Console.WriteLine("输出系统启动时间" + Environment.NewLine);Console.WriteLine(Environment.TickCount);}

字段对照表

以项目为准,仅供参考,项目地址:https://github.com/hardware-info/hardware-info

字段描述
OperatingSystem操作系统信息,如操作系统版本和名称。
MemoryStatus内存状态信息,描述系统当前内存的使用情况。
BatteryList电池信息,列出计算机系统中所有电池的状态。
BiosListBIOS 信息,列出计算机系统中的所有 BIOS 版本和设置。
ComputerSystemList计算机系统信息,提供计算机硬件配置的详细信息。
CpuListCPU 信息,列出系统中所有的 CPU 和相关信息。
CpuCoreListCPU 核心信息,列出每个 CPU 核心的详细信息。
DriveList硬盘驱动器信息,列出计算机系统中的所有硬盘驱动器。
PartitionList磁盘分区信息,列出每个硬盘驱动器的分区情况。
VolumeList分区卷信息,列出每个磁盘分区下的卷(文件系统)信息。
KeyboardList键盘信息,列出计算机系统中的所有键盘设备。
MemoryList内存条信息,列出计算机系统中所有内存模块的状态。
MonitorList显示器信息,列出系统中连接的所有显示器。
MotherboardList主板信息,列出计算机系统中的主板信息。
MouseList鼠标信息,列出计算机系统中的所有鼠标设备。
NetworkAdapterList网络适配器信息,列出计算机系统中所有网络适配器(如以太网适配器、Wi-Fi适配器等)。
PrinterList打印机信息,列出计算机系统中的所有连接打印机。
SoundDeviceList声音设备信息,列出计算机系统中的所有音频设备。
VideoControllerList显卡信息,列出计算机系统中的所有显卡及相关信息。
GetLocalIPv4Addresses()获取本地计算机的 IPv4 地址信息,根据网络接口类型(如以太网、无线网卡等)筛选。
NetworkInterfaceType网络接口类型,指示硬件的网络连接类型,如以太网或无线网卡。
OperationalStatus网络接口的操作状态,如 “Up” 表示已连接, “Down” 表示未连接。

总结

Hardware.Info 是一个强大的跨平台硬件信息查询库,支持 Windows、Linux 和 macOS 操作系统,能方便地获取多种硬件信息。尽管存在一些已知问题,比如首次查询的延迟和部分数据无效的情况,但通过合适的配置和方法,可以有效解决这些问题,提供了强大的硬件信息获取能力。
在这里插入图片描述


http://www.ppmy.cn/news/1571677.html

相关文章

Oracle常用导元数据方法

1 说明 前两天领导发邮件要求导出O库一批表和索引的ddl语句做国产化测试,涉及6个系统,6千多张表,还好涉及的用户并不多,要不然很麻烦。 如此大费周折原因,是某国产库无法做元数据迁移。。。额,只能我手动导…

ChatGPT怎么回事?

纯属发现,调侃一下~ 这段时间deepseek不是特别火吗,尤其是它的推理功能,突发奇想,想用deepseek回答一些问题,回答一个问题之后就回复服务器繁忙(估计还在被攻击吧~_~) 然后就转向了GPT&#xf…

MySQL InnoDB引擎 MVCC

MVCC(Multi-Version Concurrency Control)即多版本并发控制,是 MySQL 的 InnoDB 存储引擎实现并发控制的一种重要技术。它在很多情况下避免了加锁操作,从而提高了数据库的并发性能。 一、原理 MVCC 的核心思想是通过保存数据在某…

使用DeepSeek+本地知识库,尝试从0到1搭建高度定制化工作流(需求分析篇)

1.需求分析 数据爬取 -> 数据清洗 -> 数据存储为文本文件文本切片 -> 文本嵌入模型 -> 向量数据库用户提问 -> 数据召回 -> 注入Prompt -> 生成回答生成文案 -> 生成配图 -> 发布到平台 2.RAG流程 3.目录结构(预设) . ├── xiaohongshu_drafts…

Netty的线程模型详解

引言 Netty 是一个高性能、异步事件驱动的网络应用框架,广泛应用于各种网络服务器和客户端的开发。它基于Java NIO(Non-blocking I/O)技术,能够高效处理大量并发连接和高吞吐量的网络通信。Netty 的核心之一就是它的线程模型&…

又要pde。。

五分文件 文件 1:The energy technique for the six-step BDF method.pdf 这篇论文研究了六阶 BDF 方法的稳定性分析,并将其应用于抛物线方程的数值解。主要内容包括: 引言:介绍了 BDF 方法的基本原理和六阶 BDF 方法的特性&…

如何解决ChatGPT API响应慢的问题

随着人工智能技术的快速发展,OpenAI的ChatGPT API已广泛应用于多种场景中,从客户服务到内容创作,甚至在教育、娱乐等领域也有着重要的应用。然而,很多开发者和使用者会遇到一个共同的问题——ChatGPT API响应速度较慢,…

Python 数据挖掘与机器学习

模块一:Python编程 Python编程入门 1、Python环境搭建 2、如何选择Python编辑器? 3、Python基础 4、常见的错误与程序调试 5、第三方模块的安装与使用 6、文件读写(I/O) Python进阶与提高 1、Numpy模块库 2、Pandas模块…