资讯动态

终极硬件信息获取库Hardware.Info:跨平台.NET解决方案完全指南

发布时间:2026/8/15 20:36:43 来源:尧图企业网站定制
终极硬件信息获取库Hardware.Info跨平台.NET解决方案完全指南【免费下载链接】Hardware.InfoBattery, BIOS, CPU - processor, storage drive, keyboard, RAM - memory, monitor, motherboard, mouse, NIC - network adapter, printer, sound card - audio card, graphics card - video card. Hardware.Info is a .NET Standard 2.0 library and uses WMI on Windows, /dev, /proc, /sys on Linux and sysctl, system_profiler on macOS.项目地址: https://gitcode.com/gh_mirrors/ha/Hardware.InfoHardware.Info是一个功能强大的.NET Standard 2.0库能够帮助开发者轻松获取计算机硬件信息包括电池、BIOS、CPU、存储驱动器、键盘、内存、显示器、主板、鼠标、网络适配器、打印机、声卡和显卡等。该库在Windows上使用WMI在Linux上使用/dev、/proc、/sys在macOS上使用sysctl和system_profiler实现了真正的跨平台硬件信息获取。为什么选择Hardware.Info对于.NET开发者来说获取硬件信息通常是一项繁琐的任务需要处理不同操作系统的底层API和硬件访问方式。Hardware.Info的出现解决了这一痛点它提供了统一的接口让开发者无需关心底层实现细节就能轻松获取各种硬件信息。核心优势跨平台支持Hardware.Info支持Windows、Linux和macOS三大主流操作系统满足不同平台的硬件信息获取需求。全面的硬件信息涵盖了从电池到显卡的几乎所有硬件组件信息满足各种应用场景的需求。简单易用的API提供了直观的API设计只需几行代码就能获取所需的硬件信息。高性能针对不同平台进行了优化确保硬件信息获取的效率和准确性。支持AOT提供了Hardware.Info.Aot版本使用WmiLight替代System.Management支持AOT编译。快速开始安装与基本使用安装Hardware.InfoHardware.Info提供了NuGet包方便开发者快速集成到项目中。有两个版本可供选择Hardware.Info标准版本使用System.Management。ItemGroup PackageReference IncludeHardware.Info Version110.0.0.1 / /ItemGroupHardware.Info.AotAOT版本使用WmiLight支持AOT编译。ItemGroup PackageReference IncludeHardware.Info.Aot Version110.0.0.1 / /ItemGroup基本使用示例使用Hardware.Info获取硬件信息非常简单只需创建HardwareInfo实例并调用Refresh方法即可。class Program { static IHardwareInfo hardwareInfo; static void Main(string[] _) { try { hardwareInfo new HardwareInfo(); hardwareInfo.RefreshAll(); // 获取所有硬件信息 } catch (Exception ex) { Console.WriteLine(ex); } // 输出操作系统信息 Console.WriteLine(hardwareInfo.OperatingSystem); // 输出内存状态信息 Console.WriteLine(hardwareInfo.MemoryStatus); // 输出CPU信息 foreach (var cpu in hardwareInfo.CpuList) { Console.WriteLine(cpu); foreach (var cpuCore in cpu.CpuCoreList) Console.WriteLine(cpuCore); } // 其他硬件信息的输出类似... } }深入了解核心功能与API硬件信息获取方法Hardware.Info提供了丰富的硬件信息获取方法可以根据需要获取特定类型的硬件信息RefreshOperatingSystem()获取操作系统信息RefreshMemoryStatus()获取内存状态信息RefreshBatteryList()获取电池信息列表RefreshBIOSList()获取BIOS信息列表RefreshComputerSystemList()获取计算机系统信息列表RefreshCPUList()获取CPU信息列表RefreshDriveList()获取驱动器信息列表RefreshKeyboardList()获取键盘信息列表RefreshMemoryList()获取内存信息列表RefreshMonitorList()获取显示器信息列表RefreshMotherboardList()获取主板信息列表RefreshMouseList()获取鼠标信息列表RefreshNetworkAdapterList()获取网络适配器信息列表RefreshPrinterList()获取打印机信息列表RefreshSoundDeviceList()获取声音设备信息列表RefreshVideoControllerList()获取视频控制器信息列表RefreshAll()获取所有硬件信息自定义设置Hardware.Info提供了一些自定义设置允许开发者根据需求调整硬件信息的获取方式构造函数设置HardwareInfo(TimeSpan? timeoutInWMI null, ILoggerHardwareInfo? logger null)timeoutInWMI设置WMI查询的超时时间默认为无限超时。logger用于记录异常信息的日志记录器。刷新方法设置RefreshCPUList( bool includePercentProcessorTime true, int millisecondsDelayBetweenTwoMeasurements 500, bool includePerformanceCounter true) RefreshNetworkAdapterList( bool includeBytesPersec true, bool includeNetworkAdapterConfiguration true, int millisecondsDelayBetweenTwoMeasurements 1000)includePercentProcessorTime是否包含CPU使用率信息默认为true。millisecondsDelayBetweenTwoMeasurements两次测量之间的延迟时间毫秒默认为500或1000。includePerformanceCounter是否包含性能计数器信息默认为true。includeBytesPersec是否包含网络字节传输速率信息默认为true。includeNetworkAdapterConfiguration是否包含网络适配器配置信息默认为true。视频控制器刷新设置void RefreshVideoControllerList(bool refreshMonitorList true)refreshMonitorList是否刷新显示器列表信息默认为true。平台特定实现Hardware.Info针对不同的操作系统提供了特定的实现确保在各种平台上都能准确获取硬件信息。Windows平台在Windows平台上Hardware.Info使用WMIWindows Management Instrumentation来获取硬件信息。WMI是Windows系统提供的一种管理接口可以访问各种系统资源和硬件信息。相关实现代码位于Hardware.Info/Windows/PlatformHardwareInfo.csLinux平台在Linux平台上Hardware.Info通过读取/proc、/sys和/dev等系统文件来获取硬件信息。这些文件包含了Linux系统的各种硬件和系统信息。相关实现代码位于Hardware.Info.Core/Linux/PlatformHardwareInfo.csmacOS平台在macOS平台上Hardware.Info使用sysctl和system_profiler命令来获取硬件信息。sysctl用于获取系统控制信息system_profiler用于获取系统硬件配置信息。相关实现代码位于Hardware.Info.Core/Mac/PlatformHardwareInfo.cs性能基准Hardware.Info在不同平台和硬件配置上都表现出良好的性能。以下是一些基准测试结果Windows 8.1Intel i5-2500, 8 GB RAM方法平均时间误差标准偏差RefreshMemoryStatus947.8 ns3.77 ns3.53 nsRefreshBatteryList1,811,885.7 ns12,921.05 ns11,454.17 nsRefreshBIOSList2,086,001.0 ns23,896.69 ns22,352.98 nsRefreshCPUList1,543,579,005.2 ns2,405,376.47 ns2,132,303.59 nsWindows 10AMD Ryzen 5 5600G, 32 GB RAM方法平均时间误差标准偏差RefreshOperatingSystem2.946 ns0.0052 ns0.0047 nsRefreshMemoryStatus460.552 ns4.4810 ns3.9723 nsRefreshBatteryList1,624,392.057 ns22,526.9314 ns21,071.7057 nsRefreshBIOSList1,785,673.828 ns8,812.8115 ns8,243.5094 nsHardware.Info.Aot - Windows 10AMD Ryzen 5 5600G, 32 GB RAM方法平均时间误差标准偏差RefreshOperatingSystem2.043 ns0.0106 ns0.0089 nsRefreshMemoryStatus747.059 ns4.0881 ns3.6240 nsRefreshBatteryList769,294.056 ns7,804.1659 ns7,300.0216 nsRefreshBIOSList914,615.137 ns2,764.7719 ns2,586.1694 ns从基准测试结果可以看出Hardware.Info在各种硬件配置上都能保持较好的性能尤其是AOT版本在某些操作上表现更优。常见问题与解决方案Windows平台首次使用时的21秒延迟Hardware.Info在Windows平台上使用WMI获取硬件信息。某些WMI查询首次使用时需要21秒初始化之后的查询会立即执行。这是由于WMI内部使用的RPC远程过程调用的默认超时时间为21秒。解决方案可以通过排除导致延迟的查询来避免这一问题。例如将includePercentProcessorTime和includeBytesPersec设置为false。Windows平台网络适配器速度信息无效有时Windows平台上的NetworkAdapter.Speed可能为0或long.MaxValue。可以通过读取Win32_PerfFormattedData_Tcpip_NetworkAdapter中的CurrentBandwidth来获取正确的速度值但这会导致首次读取时的21秒延迟。调用RefreshNetworkAdapterList时将includeBytesPersec设置为true也会读取CurrentBandwidth。AOT编译时的WmiNetUtilsHelper异常当发布设置中使用PublishTrimmedtrue/PublishTrimmed时Windows平台可能会抛出WmiNetUtilsHelper异常。这是一个已知问题可以使用Hardware.Info.Aot版本来避免。PerformanceCounter可能导致的msvcr80.dll崩溃在未安装Visual C 2005 CRT的机器上使用PerformanceCounter可能导致msvcr80.dll崩溃。可以将includePerformanceCounter设置为false来避免使用PerformanceCounter。版本历史与更新日志Hardware.Info不断更新和完善以下是一些重要版本的更新内容110.0.0.1修复了Windows平台的GetCpuList方法。110.0.0.0添加了日志记录器支持优化了视频控制器刷新方法增加了显示器列表信息完善了Linux和macOS平台的硬件信息获取。101.1.1.0添加了Hardware.Info.Aot版本支持AOT编译。101.0.0.0修复了Linux平台的CPU信息获取添加了延迟设置。100.1.1.0添加了计算机系统信息获取。1.1.1.0添加了IHardwareInfo接口支持模拟测试。如何贡献Hardware.Info是一个开源项目欢迎开发者贡献代码和提出建议。如果您发现了bug或有新功能需求可以通过提交issue或pull request来参与项目开发。项目代码仓库地址https://gitcode.com/gh_mirrors/ha/Hardware.Info总结Hardware.Info是一个功能全面、跨平台的.NET硬件信息获取库为开发者提供了简单易用的API帮助他们轻松获取各种硬件信息。无论是开发系统监控工具、硬件诊断软件还是需要硬件信息的应用程序Hardware.Info都是一个理想的选择。通过不断的更新和完善Hardware.Info将继续为.NET开发者提供更好的硬件信息获取体验。【免费下载链接】Hardware.InfoBattery, BIOS, CPU - processor, storage drive, keyboard, RAM - memory, monitor, motherboard, mouse, NIC - network adapter, printer, sound card - audio card, graphics card - video card. Hardware.Info is a .NET Standard 2.0 library and uses WMI on Windows, /dev, /proc, /sys on Linux and sysctl, system_profiler on macOS.项目地址: https://gitcode.com/gh_mirrors/ha/Hardware.Info创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价