Net跨平台硬件信息查询库 Hardware.Info:全面获取系统硬件详情
Hardware.Info 是一个基于 .NET Standard 2.0 的跨平台库,提供了硬件信息查询的功能,支持 Windows、Linux 和 macOS 操作系统。该库通过不同平台下的系统接口获取硬件信息,包括电池、电池管理、BIOS、CPU、存储驱动、键盘、内存、显示器、主板、鼠标、网络适配器、打印机、声音卡、显卡等硬件组件的详细数据。
主要特点
跨平台支持
- Windows:使用 Windows Management Instrumentation(WMI)来获取硬件信息。
- Linux:通过
/dev、/proc、/sys文件系统来访问硬件信息。 - macOS:利用
sysctl和system_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:全面获取系统硬件详情的更多相关文章
- C/C++通过WMI和系统API函数获取获取系统硬件配置信息
转载:http://www.cnblogs.com/renyuan/archive/2012/12/29/2838716.html 转载:http://blog.csdn.net/jhqin/arti ...
- windows代码获取系统硬件信息的两种方式
欢迎访问我的个人博客:xie-kang.com 原文地址 目前windows有两种方式获取系统硬件信息: 1)通过GetSystemFirmwareTable API获取SMBIOS信息,一段含丰富信 ...
- android 获取系统硬件信息
一,首先设置权限访问: <uses-permission android:name="android.permission.READ_PHONE_STATE" /> ...
- Linux硬件信息查询命令
系统 uname -a # 查看内核/操作系统/CPU信息 Linux hostname 2.6.18-128.el5 #1 SMP Wed Dec 17 11:41:38 ...
- C# 获取系统硬件可用信息
如何获取系统可用磁盘和可用内存? 1 获取磁盘信息 这个有自带的 DriveInfo 可以用. DriveInfo 类 (System.IO) | Microsoft Docs 2 获取内存信息 参考 ...
- C++ WMI获取系统硬件信息(CPU/DISK/NetWork etc)
官网找到一个例子,根据例子修改下可以获取很多信息 #define _WIN32_DCOM #include <iostream> using namespace std; #include ...
- linux查询硬件信息
硬件信息查询 sudo dmidecode -t baseboard
- Linux硬件信息命令大全
硬件信息 在linux系统中,有很多命令可以用于查询主机的硬件信息,有些命令仅仅针对于特定的硬件部件,比如cpu,内存等,而有些命令可以查询很多的硬件信息. 这篇帖子简单地带大家了解一下最常用的查询各 ...
- 检查和收集 Linux 硬件信息的 7 个命令
http://blog.sae.sina.com.cn/archives/3910 在Linux系统中,有许多命令可用于查询主机的硬件信息.一些命令只针对特定的硬件组件,比如CPU.内存,一些命令可以 ...
- 自动化之路 python psutil模块 收集硬件信息
一.psutil模块 1. psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控,分析和限制系统资源及进程的管理.它实现了 ...
随机推荐
- regsvr32.exe使用
regsvr32.exe使用详解: regsvr32.exe是32位系统下使用的DLL注册和反注册工具,使用它必须通过命令行的方式使用,格式是: regsvr32 [/u] [/s] [/n] [ ...
- 【滑动窗口】codeforces 1290 A. Mind Control
题意 第一行输入一个正整数 \(T(1 \leq T \leq 1000)\),表示共有 \(T\) 组测试用例.对于每一组测试用例: 第一行输入三个正整数 \(n, m, k(1 \leq m \l ...
- Elm 和 Jetpack Compose 殊途同归及 MVVM 缺点分析
Html.lazy · An Introduction to Elm 可能搞 vdom 的都会到 lazy renderer 这一步,react 可能也可以这么搞或者已经这么搞了我不知道,Elm 提到 ...
- 关于 K8s 的一些基础概念整理-补充【k8s系列之五】
〇.前言 本文继续整理下 K8s 的一些基础概念,作为前一篇概念汇总的补充. 前一篇博文链接:https://www.cnblogs.com/hnzhengfy/p/k8s_concept.html. ...
- Mac安装thrift出现的问题总结
https://www.cnblogs.com/fingerboy/p/6424248.html刚上手thrift,安装上面花了时间,我在上面的链接中照着安装的.下面记录发生的问题:当我正确安装到bi ...
- Qt编写地图综合应用22-动态轨迹
一.前言 上一篇文章写道拿到路径规划的轨迹点坐标集合,并且已经可以通过调用addPolyline绘制线段的形式将轨迹点绘制,接下来就是要如何动态的绘制这些轨迹点,最简单的方法就是开个定时器挨个取出下一 ...
- Qt音视频开发3-vlc录像存储
一.前言 录像功能是视频监控系统的常用功能,就是将打开的视频流或者视频文件重新保存成MP4文件,当然也可以保存成其他格式,一般默认用MP4比较好,比较标准一些,MP4格式的兼容性最好,基本上没有说那台 ...
- DVWA靶场搭建及错误解决教程
前言 DVWA(Damn Vulnerable Web Application)靶场是一个旨在帮助安全人员和开发人员学习和提高网络安全技能的开源项目.它是一个故意存在多种安全漏洞的 PHP/MySQL ...
- 张正友的相机标定论文Flexible camera calibration by viewing a plane from unknown orientations的翻译
张正友的相机标定论文Flexible camera calibration by viewing a plane from unknown orientations的翻译: 翻译的pdf版本为:htt ...
- 得物从0到1自研客服IM系统的技术实践之路
本文由得物技术王卫强分享,为了更好的阅读体验,有较多的内容修订和排版优化. 一.引言 客服IM的核心业务其实就是在线沟通,客服IM的好处是使得客服与用户通过实时沟通的方式可以在最短的时间内帮助用户解决 ...