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. docker之网络与数据管理

    docker默认使用bridge(单主机互联)和overlay(可跨主机互联)两种网络驱动来进行容器的网络管理.如需要,还可以自定义网络驱动插件进行docker容器的网络管理. 1.docker默认网 ...

  2. Blazor 组件库 BootstrapBlazor 中Carousel组件介绍

    组件介绍 Carousel 走马灯的作用是在有限空间内,循环播放同一类型的图片.文字等内容. 代码如下: <Carousel Images="@Images" Width=& ...

  3. 基于surging的木舟平台如何分布式接入设备

    一.概述 上篇文章介绍了木舟通过基于木舟平台浅谈surging 的热点KEY的解决方法,那么此篇文章将介绍基于surging的木舟平台如何分布式接入设备. 木舟 (Kayak) 是什么? 木舟(Kay ...

  4. C#中使用IMemoryCache实现内存缓存

    1 缓存基础知识 缓存是实际工作中非常常用的一种提高性能的方法. 缓存可以减少生成内容所需的工作,从而显著提高应用程序的性能和可伸缩性. 缓存最适用于不经常更改的数据. 通过缓存,可以比从原始数据源返 ...

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

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

  6. FastExcel 合并单元格(相当的行数据,进行合并)

    目录 需求 思路 实现 Excel导出单元格全量合并策略 日期格式转换 接口代码 Service DTO 使用FastExcel数据导出:官网: https://idev.cn/fastexcel/z ...

  7. jQuery 国内 CDN

    eShop 中使用了 cdnjs ,由于网络问题,导致编译失败 可以使用如下国内链接: https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.mi ...

  8. Not all slots covered! Only 5461 slots are available. Set checkSlotsCoverage = false to avoid this check

    Not all slots covered! Only 5461 slots are available. Set checkSlotsCoverage = false to avoid this c ...

  9. 优化大宽表查询性能,揭秘GaussDB(DWS) 谓词列analyze

    本文分享自华为云社区<GaussDB(DWS) 谓词列analyze揭秘>,作者:SmithCoder. 1. 前言 适用版本:[9.1.0.100(及以上)] ​当前GaussDB(DW ...

  10. Qt/C++音视频开发57-切换音视频轨道/切换节目流/分别切换音频视频轨道

    一.前言 对各种音视频文件格式的支持,是一个播放器的基础功能.一般的音视频文件只有1路流,比如音频文件只有1路音频流,视频文件只有1路音频1路视频流,实践过程中发现,还有一种ts格式的文件,可能有多路 ...