@echo off
color 0a
title 硬件检测
mode con cols=90
sc config winmgmt start= auto >nul 2<&1
net start winmgmt 2>1nul
setlocal ENABLEDELAYEDEXPANSION
echo 主版:
for /f "tokens=1,* delims==" %%a in ('wmic BASEBOARD get Manufacturer^,Product^,Version^,SerialNumber /value') do (
set /a tee+=1
if "!tee!" == "3" echo 制造商 = %%b
if "!tee!" == "4" echo 型 号 = %%b
if "!tee!" == "5" echo 序列号 = %%b
if "!tee!" == "6" echo 版 本 = %%b
)
set tee=0
echo BIOS:
for /f "tokens=1,* delims==" %%a in ('wmic bios get
CurrentLanguage^,Manufacturer^,SMBIOSBIOSVersion^,SMBIOSMajorVersion^,SMBIOSMinorVersion^,ReleaseDate /value') do (
set /a tee+=1
if "!tee!" == "3" echo 当前语言 = %%b
if "!tee!" == "4" echo 制造商 = %%b
if "!tee!" == "5" echo 发行日期 = %%b
if "!tee!" == "6" echo 版 本 = %%b
if "!tee!" == "7" echo SMBIOSMajorVersion = %%b
if "!tee!" == "8" echo SMBIOSMinorVersion = %%b
)
set tee=0
echo.
echo CPU:
for /f "tokens=1,* delims==" %%a in ('wmic cpu get name^,ExtClock^,CpuStatus^,Description /value') do (
set /a tee+=1
if "!tee!" == "3" echo CPU个数 = %%b
if "!tee!" == "4" echo 处理器版本 = %%b
if "!tee!" == "5" echo 外 频 = %%b
if "!tee!" == "6" echo 名称及主频率 = %%b
)
set tee=0
echo.
echo 显示器:
for /f "tokens=1,* delims==" %%a in ('wmic DESKTOPMONITOR get name^,ScreenWidth^,ScreenHeight^,PNPDeviceID /value') do (
set /a tee+=1
if "!tee!" == "3" echo 类 型 = %%b
if "!tee!" == "4" echo 其他信息 = %%b
if "!tee!" == "5" echo 屏幕高 = %%b
if "!tee!" == "6" echo 屏幕宽 = %%b
)
set tee=0
echo.
echo 硬 盘:
for /f "tokens=1,* delims==" %%a in ('wmic DISKDRIVE get model^,interfacetype^,size^,totalsectors^,partitions /value') do (
set /a tee+=1
if "!tee!" == "3" echo 接口类型 = %%b
if "!tee!" == "4" echo 硬盘型号 = %%b
if "!tee!" == "5" echo 分区数 = %%b
if "!tee!" == "6" echo 容 量 = %%b
if "!tee!" == "7" echo 总扇区 = %%b
)
echo 分区信息:
wmic LOGICALDISK where mediatype='12' get description,deviceid,filesystem,size,freespace
set tee=0
echo.
echo 网 卡:
for /f "tokens=1,* delims==" %%a in ('wmic NICCONFIG where "index='1'" get ipaddress^,macaddress^,description /value') do (
set /a tee+=1
if "!tee!" == "3" echo 网卡类型 = %%b
if "!tee!" == "4" echo 网卡IP = %%b
if "!tee!" == "5" echo 网卡MAC = %%b
)
set tee=0
echo.
echo 打印机:
for /f "tokens=1,* delims==" %%a in ('wmic PRINTER get caption /value') do (
set /a tee+=1
if "!tee!" == "3" echo 打印机名字 = %%b
)
set tee=0
echo.
echo 声 卡:
for /f "tokens=1,* delims==" %%a in ('wmic SOUNDDEV get name^,deviceid /value') do (
set /a tee+=1
if "!tee!" == "3" echo 其他信息 = %%b
if "!tee!" == "4" echo 型 号 = %%b
)
set tee=0
echo.
echo 内 存:
for /f "tokens=1,* delims==" %%a in ('systeminfo^|find "内存"') do (
echo %%a 4534 %%b
)
echo.
echo 显 卡:
del /f "%TEMP%temp.txt" 2>nul
dxdiag /t %TEMP%temp.txt
:显卡
rem 这里需要30秒左右!
if EXIST "%TEMP%temp.txt" (
for /f "tokens=1,2,* delims=:" %%a in ('findstr /c:" Card name:" /c:"Display Memory:" /c:"Current Mode:" "%TEMP%temp.txt"') do (
set /a tee+=1
if !tee! == 1 echo 显卡型号: %%b
if !tee! == 2 echo 显存大小: %%b
if !tee! == 3 echo 当前设置: %%b
) ) else (
ping /n 2 127.1>nul
goto 显卡
)
set /p var=需要额外信息吗(y/n):
if /i %var% == y notepad "%TEMP%temp.txt"
del /f "%TEMP%temp.txt" 2>nul
pause
以下为电脑硬件检测代码相关技术要点及实现方法的整理:
一、硬件故障诊断代码
-
BIOS自检阶段代码
- 00/FF:主板未正常运行,需检查CPU安装或BIOS芯片状态
- C0/D0:内存初始化异常,可能需更换内存条或清洁插槽
- 2A/31:显卡初始化失败,建议检查显卡连接或驱动兼容性
- 80:POST自检完成但无法进入系统,可能存储设备异常
-
品牌BIOS专用代码
- Award BIOS:0B(内存故障)(IRQ中断异常)
- AMI BIOS:0D(显示器未检测到)、(ROM数据错误)
二、系统工具检测方法
-
Windows内置工具
- 内存检测:通过控制面板启动「Windows内存诊断」工具自动检测
- 硬盘检测:执行命令
chkdsk X:/f
(X为盘符)或通过磁盘属性检查工具 - 综合诊断:运行
perfmon /report
生成包含硬件状态的详细报告
-
硬件信息查询命令
- 查看机器码/UUID:执行
wmic csproduct get uuid
获取唯一标识 - 显示硬件信息:运行
dxdiag
生成DirectX诊断报告,包含CPU、内存、显卡等参数
- 查看机器码/UUID:执行
三、编程获取硬件特征码
-
Python脚本示例
import wmi wmi_obj = wmi.WMI() devices = wmi_obj.Win32_PnPEntity() for device in devices: print(f"设备ID: {device.DeviceID}, 描述: {device.Description}")
通过WMI获取设备ID与描述信息
-
特征码推荐组合
- 稳定项:DMI UUID(主板)、硬盘序列号、CPU序列号、BIOS序列号
- 实现方式:
- DMI/BIOS序列号:通过WMI接口获取
- 硬盘序列号:调用底层API
- CPU序列号:需汇编指令直接读取
四、Linux系统检测(以Ubuntu为例)
- 使用
dmidecode
命令获取DMI信息,或通过lshw
工具导出完整硬件清单
以上方法需结合实际场景选择,编程实现时需注意权限及跨平台兼容性问题。
发表评论