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 电池信息,列出计算机系统中所有电池的状态。
BiosList BIOS 信息,列出计算机系统中的所有 BIOS 版本和设置。
ComputerSystemList 计算机系统信息,提供计算机硬件配置的详细信息。
CpuList CPU 信息,列出系统中所有的 CPU 和相关信息。
CpuCoreList CPU 核心信息,列出每个 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 操作系统,能方便地获取多种硬件信息。尽管存在一些已知问题,比如首次查询的延迟和部分数据无效的情况,但通过合适的配置和方法,可以有效解决这些问题,提供了强大的硬件信息获取能力。

Net跨平台硬件信息查询库 Hardware.Info:全面获取系统硬件详情的更多相关文章

  1. C/C++通过WMI和系统API函数获取获取系统硬件配置信息

    转载:http://www.cnblogs.com/renyuan/archive/2012/12/29/2838716.html 转载:http://blog.csdn.net/jhqin/arti ...

  2. windows代码获取系统硬件信息的两种方式

    欢迎访问我的个人博客:xie-kang.com 原文地址 目前windows有两种方式获取系统硬件信息: 1)通过GetSystemFirmwareTable API获取SMBIOS信息,一段含丰富信 ...

  3. android 获取系统硬件信息

    一,首先设置权限访问: <uses-permission android:name="android.permission.READ_PHONE_STATE" />  ...

  4. Linux硬件信息查询命令

    系统 uname -a              # 查看内核/操作系统/CPU信息 Linux hostname 2.6.18-128.el5 #1 SMP Wed Dec 17 11:41:38 ...

  5. C# 获取系统硬件可用信息

    如何获取系统可用磁盘和可用内存? 1 获取磁盘信息 这个有自带的 DriveInfo 可以用. DriveInfo 类 (System.IO) | Microsoft Docs 2 获取内存信息 参考 ...

  6. C++ WMI获取系统硬件信息(CPU/DISK/NetWork etc)

    官网找到一个例子,根据例子修改下可以获取很多信息 #define _WIN32_DCOM #include <iostream> using namespace std; #include ...

  7. linux查询硬件信息

    硬件信息查询 sudo dmidecode -t baseboard

  8. Linux硬件信息命令大全

    硬件信息 在linux系统中,有很多命令可以用于查询主机的硬件信息,有些命令仅仅针对于特定的硬件部件,比如cpu,内存等,而有些命令可以查询很多的硬件信息. 这篇帖子简单地带大家了解一下最常用的查询各 ...

  9. 检查和收集 Linux 硬件信息的 7 个命令

    http://blog.sae.sina.com.cn/archives/3910 在Linux系统中,有许多命令可用于查询主机的硬件信息.一些命令只针对特定的硬件组件,比如CPU.内存,一些命令可以 ...

  10. 自动化之路 python psutil模块 收集硬件信息

    一.psutil模块 1. psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控,分析和限制系统资源及进程的管理.它实现了 ...

随机推荐

  1. Redis工具之redis_rdb_tools

    redis_rdb_tools工具的介绍: 解析redis的dump.rdb文件,分析内存,以JSON格式导出数据.|提供的功能有: 1. 生成内存报告 2. 转储文件到JSON 3. 使用标准的di ...

  2. Winform Tab增加关闭标签页

    Winform的Tab控件,有新增有移除,但是呢,缺了一个标签页上的关闭按钮,这个东西说重要也重要,说不重要也不重要. 这里就说一下怎么添加这玩意. 这玩意需要重绘tab控件,所以我们需要处理Draw ...

  3. LGR-204-Div.2

    Contest link 质量不错的比赛. A 比较明显的题,贪心往下做就可以. #include <bits/stdc++.h> using i64 = long long; const ...

  4. 使用redis 的订阅服务

    1.业务使用场景 我们在使用表单动态添加字段,如果新增字段,再保存数据,这个时候就会出错,出错的原因是seata 再本地缓存元数据,修改物理表的时候,这个元数据并没有发生变化,因此需要刷新元数据,因为 ...

  5. 使用ProWindow时,控制按钮状态的说明

    在Pro SDK中,提供了一个默认的窗口基类,ProWindow Class,提供了基础的窗体样式,可供扩展和调用. 有网友问我,在使用时,会发现窗体右上角的控制按钮,有时会没有按照自己的预期显示. ...

  6. 《JavaScript 模式》读书笔记(7)— 设计模式3

    这一篇,我们学习本篇中最为复杂的三个设计模式,代理模式.中介者模式以及观察者模式.这三个模式很重要!! 七.代理模式 在代理设计模式中,一个对象充当另一个对象的接口.它与外观模式的区别之处在于,外观模 ...

  7. 如何使用Jet家软件进行学习(intellij、idea、IDEA、Pycharm……)

    如何使用Jet家软件进行学习 本文档提供方法只用于学习研究,不得用于其他用途 以下,萌狼蓝天将会提供两种方式 目录 如何使用Jet家软件进行学习 第一种方式:使用EAP版本 第二种方式:使用插件 (1 ...

  8. 【MyBatis】学习笔记15:通过分步查询解决一对多或多对多问题

    目录 对象 SmbmsProvider.java SmbmsBill.java 接口 providerMapper.java orderMapper.java 映射文件 providerMapper. ...

  9. CSV文件处理工具-CsvUtil

    介绍 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本). Hutool针对此格式,参考 ...

  10. 【转载】Spring Cloud Gateway-过滤器工厂详解(GatewayFilter Factories)

    http://www.imooc.com/article/290816 TIPS 本文基于 Spring Cloud Greenwich SR2 ,理论支持 Spring Cloud Greenwic ...