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.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 操作系統,能方便地獲取多種硬件信息。盡管存在一些已知問題,比如首次查詢的延遲和部分數據無效的情況,但通過合適的配置和方法,可以有效解決這些問題,提供了強大的硬件信息獲取能力。
轉自https://www.cnblogs.com/netcore5/p/18711795
該文章在 2025/2/13 10:32:20 編輯過