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

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 地址等。
  • 显卡:显卡型号、内存、驱动信息等。

获取硬件信息

第一步,老规矩,先安装

bash 复制代码
Install-Package Hardware.Info
csharp 复制代码
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 操作系统,能方便地获取多种硬件信息。尽管存在一些已知问题,比如首次查询的延迟和部分数据无效的情况,但通过合适的配置和方法,可以有效解决这些问题,提供了强大的硬件信息获取能力。