Hardware.Info
是一個基于 .NET Standard 2.0 的跨平臺庫,提供了硬件信息查詢的功能,支持 Windows、Linux 和 macOS 操作系統(tǒng)。該庫通過不同平臺下的系統(tǒng)接口獲取硬件信息,包括電池、電池管理、BIOS、CPU、存儲驅(qū)動、鍵盤、內(nèi)存、顯示器、主板、鼠標、網(wǎng)絡(luò)適配器、打印機、聲音卡、顯卡等硬件組件的詳細數(shù)據(jù)。
主要特點
跨平臺支持
- Windows:使用 Windows Management Instrumentation(WMI)來獲取硬件信息。
- Linux:通過
/dev
、/proc
、/sys
文件系統(tǒng)來訪問硬件信息。 - macOS:利用
sysctl
和 system_profiler
命令來查詢硬件數(shù)據(jù)。
獲取硬件信息
- 電池信息:當前電池狀態(tài)、容量、充電狀態(tài)等。
- BIOS:BIOS 版本、廠商等信息。
- CPU 處理器:包括處理器型號、架構(gòu)、核心數(shù)量、頻率等詳細信息。
- 存儲驅(qū)動:磁盤驅(qū)動器型號、容量、狀態(tài)等。
- 內(nèi)存:系統(tǒng)內(nèi)存容量、使用情況等。
- 顯示器:分辨率、顏色深度、刷新率等。
- 網(wǎng)絡(luò)適配器:包括網(wǎng)絡(luò)接口卡的速度、MAC 地址、IP 地址等。
- 顯卡:顯卡型號、內(nèi)存、驅(qū)動信息等。
獲取硬件信息
第一步,老規(guī)矩,先安裝
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("輸出操作系統(tǒng)信息" + Environment.NewLine);
Console.WriteLine(hardwareInfo.OperatingSystem);
Console.WriteLine("輸出內(nèi)存狀態(tài)信息" + 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("輸出計算機系統(tǒng)信息" + 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("輸出磁盤驅(qū)動器信息" + Environment.NewLine);
foreach (var drive in hardwareInfo.DriveList)
{
Console.WriteLine(drive);
Console.WriteLine("輸出驅(qū)動器分區(qū)信息" + Environment.NewLine);
foreach (var partition in drive.PartitionList)
{
Console.WriteLine(partition);
Console.WriteLine("輸出分區(qū)卷信息" + 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("輸出內(nèi)存信息" + 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("輸出網(wǎng)絡(luò)適配器信息" + 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("輸出聲音設(shè)備信息" + 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 類型并且狀態(tài)為 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("輸出狀態(tài)為 Up 的網(wǎng)絡(luò)接口卡的本地 IPv4 地址" + Environment.NewLine);
foreach (var address in HardwareInfo.GetLocalIPv4Addresses(OperationalStatus.Up))
Console.WriteLine(address);
Console.WriteLine();
Console.WriteLine("輸出所有網(wǎng)絡(luò)接口卡的本地 IPv4 地址" + Environment.NewLine);
foreach (var address in HardwareInfo.GetLocalIPv4Addresses())
Console.WriteLine(address);
Console.WriteLine();
Console.WriteLine("輸出計算機當前時間" + Environment.NewLine);
Console.WriteLine(DateTime.Now);
Console.WriteLine("輸出系統(tǒng)啟動時間" + Environment.NewLine);
Console.WriteLine(Environment.TickCount);
}
字段對照表
以項目為準,僅供參考,項目地址:https://github.com/hardware-info/hardware-info
字段 | 描述 |
---|
OperatingSystem | 操作系統(tǒng)信息,如操作系統(tǒng)版本和名稱。 |
MemoryStatus | 內(nèi)存狀態(tài)信息,描述系統(tǒng)當前內(nèi)存的使用情況。 |
BatteryList | 電池信息,列出計算機系統(tǒng)中所有電池的狀態(tài)。 |
BiosList | BIOS 信息,列出計算機系統(tǒng)中的所有 BIOS 版本和設(shè)置。 |
ComputerSystemList | 計算機系統(tǒng)信息,提供計算機硬件配置的詳細信息。 |
CpuList | CPU 信息,列出系統(tǒng)中所有的 CPU 和相關(guān)信息。 |
CpuCoreList | CPU 核心信息,列出每個 CPU 核心的詳細信息。 |
DriveList | 硬盤驅(qū)動器信息,列出計算機系統(tǒng)中的所有硬盤驅(qū)動器。 |
PartitionList | 磁盤分區(qū)信息,列出每個硬盤驅(qū)動器的分區(qū)情況。 |
VolumeList | 分區(qū)卷信息,列出每個磁盤分區(qū)下的卷(文件系統(tǒng))信息。 |
KeyboardList | 鍵盤信息,列出計算機系統(tǒng)中的所有鍵盤設(shè)備。 |
MemoryList | 內(nèi)存條信息,列出計算機系統(tǒng)中所有內(nèi)存模塊的狀態(tài)。 |
MonitorList | 顯示器信息,列出系統(tǒng)中連接的所有顯示器。 |
MotherboardList | 主板信息,列出計算機系統(tǒng)中的主板信息。 |
MouseList | 鼠標信息,列出計算機系統(tǒng)中的所有鼠標設(shè)備。 |
NetworkAdapterList | 網(wǎng)絡(luò)適配器信息,列出計算機系統(tǒng)中所有網(wǎng)絡(luò)適配器(如以太網(wǎng)適配器、Wi-Fi適配器等)。 |
PrinterList | 打印機信息,列出計算機系統(tǒng)中的所有連接打印機。 |
SoundDeviceList | 聲音設(shè)備信息,列出計算機系統(tǒng)中的所有音頻設(shè)備。 |
VideoControllerList | 顯卡信息,列出計算機系統(tǒng)中的所有顯卡及相關(guān)信息。 |
GetLocalIPv4Addresses() | 獲取本地計算機的 IPv4 地址信息,根據(jù)網(wǎng)絡(luò)接口類型(如以太網(wǎng)、無線網(wǎng)卡等)篩選。 |
NetworkInterfaceType | 網(wǎng)絡(luò)接口類型,指示硬件的網(wǎng)絡(luò)連接類型,如以太網(wǎng)或無線網(wǎng)卡。 |
OperationalStatus | 網(wǎng)絡(luò)接口的操作狀態(tài),如 “Up” 表示已連接, “Down” 表示未連接。 |
總結(jié)
Hardware.Info
是一個強大的跨平臺硬件信息查詢庫,支持 Windows、Linux 和 macOS 操作系統(tǒng),能方便地獲取多種硬件信息。盡管存在一些已知問題,比如首次查詢的延遲和部分數(shù)據(jù)無效的情況,但通過合適的配置和方法,可以有效解決這些問題,提供了強大的硬件信息獲取能力。
轉(zhuǎn)自https://www.cnblogs.com/netcore5/p/18711795
該文章在 2025/2/13 10:32:20 編輯過