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. json数据对接

    1.前言 fastadmin框架本身封装了一系列接口和插件来对表格数据进行管理(新增,编辑,删除),但是其使用的bootstrapTable基于jquery开发,基于某些原因,我们想要使用Vue框架代 ...

  2. LR语法分析算法

    LR语法分析器 组成:一个输入,一个输出,状态栈,驱动程序,语法分析表 注意:规约后需要寻找新的符号在栈顶状态上的转换 例如: 状态栈   符号栈       输入 0 5        $id    ...

  3. electron postinstall$ node install.js报错

    本来以为是文件路径错了执行失败,手动去执行了下install.js,还是报错,但是不一样是连接超时 试了几种办法,简单直接就是如下方法 1:从项目node_modules中找到electron下的in ...

  4. DDCA —— 片上网络互联

    1. 路由 1.1 网络拓扑示例 Grid(网格) 网络拓扑通常是一个二维矩阵形式,每个节点(处理器)与其上下左右相邻的节点相连. 如果节点在边缘,某些方向上可能没有相邻节点(边界节点). Torus ...

  5. 如何使用图片压缩降低COS流量成本?

    导语 本文将介绍如何通过[图片压缩]能力,让您降本增效的使用 COS ,文章将写得浅显易懂,旨在快速带领用户了解图片压缩的用法及带来的收益. **** 图片压缩为什么会让您降本增效?******** ...

  6. sqlalchemy 的 schema 合并模块 alembic 使用

    alembic 很好的解决了升级数据库改变表结构的传统难题,官方的推荐用法是当一个工具用,这是从 Stack Overflow 扒到的直接用内部 api 的代码,操作有点像 diff_patch. 来 ...

  7. Kubernetes 可能是分布式架构的大结局了

    前两年在爬虫里折腾的太久了,最近快马加鞭追赶分布式架构潮流. SpringCloud.Dubbo.ServiceComb 刷完,以为分布式架构就是这样了.这批架构可能也就 Java 栈的人会感觉它们特 ...

  8. Llama3.1 是怎么工作哒?原文翻译版😘

    了解Llama3.1如何工作--深入探讨模型流程 原文标题:Understand How Llama3.1 Works - A Deep Dive Into the Model Flow 原作者:Xi ...

  9. 长连接网关技术专题(十一):揭秘腾讯公网TGW网关系统的技术架构演进

    本文由腾讯技术团队peter分享,原题"腾讯网关TGW架构演进之路",下文进行了排版和内容优化等. 1.引言 TGW全称Tencent Gateway,是一套实现多网统一接入,支持 ...

  10. OpenMMLab AI实战营 第七课笔记

    OpenMMLab AI实战营 第七课笔记 目录 OpenMMLab AI实战营 第七课笔记 import os import numpy as np from PIL import Image im ...