api 获取硬件信息

API调用系统接口,实时获取CPU、内存、硬盘等硬件

API 获取硬件信息详解

操作系统支持的硬件信息 API

不同操作系统提供不同的 API 或工具来获取硬件信息,以下是主流系统的实现方式:

api 获取硬件信息

操作系统 核心 API/工具 功能范围
Windows WMI (Windows Management Instrumentation) CPU、内存、硬盘、主板、显卡等
Linux /proc 文件系统、lscpulshw 命令 CPU、内存、硬盘、网络设备等
macOS system_profiler 命令、IOKit 框架 CPU、内存、硬盘、传感器等
跨平台 psutil(Python 库)、System.Info(.NET) 通用硬件信息(需依赖底层系统 API)

主流编程语言实现方案

Python 实现(推荐 psutil 库)

核心功能
功能 API 方法 返回值
CPU 信息 cpu_count(), cpu_freq() 核心数、频率
内存信息 virtual_memory() 总内存、可用内存、使用率
硬盘信息 disk_partitions(), disk_usage() 分区列表、容量、挂载点
网络信息 net_if_addrs() IP 地址、网卡名称、掩码
传感器温度 sensors_temperatures() 仅支持部分 Linux 系统(需 lm-sensors
示例代码
import psutil
# 获取 CPU 信息
cpu_count = psutil.cpu_count(logical=False)  # 物理核心数
cpu_freq = psutil.cpu_freq().max  # 最大频率(MHz)
# 获取内存信息
mem = psutil.virtual_memory()
total_mem = mem.total / (1024 ** 3)  # 转换为 GB
# 获取硬盘信息
disk = psutil.disk_usage('/')
disk_free = disk.free / (1024 ** 3)  # 剩余空间(GB)
print(f"CPU: {cpu_count} 核,最高频率 {cpu_freq}MHz")
print(f"内存: {total_mem:.2f}GB,剩余 {disk_free:.2f}GB")

Windows WMI 查询(PowerShell/C#)

常用 WMI 类
WMI 类 功能
Win32_Processor CPU 型号、核心数、线程数
Win32_PhysicalMemory 内存容量、插槽数量
Win32_DiskDrive 硬盘型号、容量、序列号
Win32_NetworkAdapter 网卡名称、MAC 地址、IP 配置
PowerShell 示例
# 获取 CPU 信息
Get-WmiObject -Class Win32_Processor | Select-Object Name, NumberOfCores, MaxClockSpeed
# 获取硬盘信息
Get-WmiObject -Class Win32_DiskDrive | Select-Object Model, Size, SerialNumber

Linux 系统命令与文件

关键命令与文件
命令/文件 功能
lscpu 输出 CPU 详细信息(架构、核心数、频率)
lshw 列举所有硬件信息(需超级用户权限)
/proc/meminfo 内存使用详情(单位 kB)
df -h 磁盘分区容量与使用率
ifconfig 网络接口配置(IP、MAC 地址)
示例:解析 /proc/cpuinfo
# 提取 CPU 核心数
grep -m 1 "cpu cores" /proc/cpuinfo | awk '{print $4}'
# 提取 CPU 型号
grep "model name" /proc/cpuinfo | head -n 1 | cut -d":" -f2 | xargs

注意事项

  1. 权限问题
    • Windows 部分 WMI 查询需要管理员权限。
    • Linux 下 lshw 需使用 sudo
  2. 跨平台兼容性
    • 推荐使用 psutil(Python)或 System.Info(.NET)实现跨平台。
  3. 性能开销

    避免频繁调用硬件查询 API(如每秒多次),可能增加系统负载。

  4. 虚拟化环境限制

    在虚拟机中部分硬件信息(如主板型号、物理硬盘序列号)可能不可用。

    api 获取硬件信息


相关问题与解答

问题 1:如何获取网络适配器的实时流量?

解答
可使用 psutil.net_io_counters()(Python)或 Get-WmiObject -Class Win32_NetworkAdapter(PowerShell)。
示例(Python)

import psutil
net = psutil.net_io_counters()
print(f"发送流量: {net.bytes_sent / (1024 ** 2):.2f} MB")
print(f"接收流量: {net.bytes_recv / (1024 ** 2):.2f} MB")

问题 2:如何检测 CPU 是否支持超线程技术?

解答

api 获取硬件信息

  • Windows:对比 Win32_Processor.NumberOfCores(物理核心数)与 Win32_ComputerSystem.NumberOfLogicalProcessors(逻辑核心数),若逻辑核心数 > 物理核心数则支持超线程。
  • Linux:通过 lscpu 命令查看 Thread(s) per core,若值大于

以上就是关于“api 获取硬件信息”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-05-10 05:28
下一篇 2025-05-10 05:34

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信