|
winre.wim 与 install.wim drive 注册表合并后,可能出现 *.inf_??????? 中 有两个 *.inf_ ,导致一些驱动装载出现问题。
弄个脚本,根据系统是否真实存在 对应的 驱动文件,来删除那个无效的。
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- rem 系统所在位置
- set "sysdrv=H:\pe.system\boot.wim\mount"
- rem 挂载注册表 挂载名称
- set load_p=pe_sys
- rem system 中两个注册表位置
- set infs=HKEY_USERS\!load_p!\DriverDatabase\DriverInfFiles
- set sysdir=HKEY_USERS\!load_p!\DriverDatabase\DriverPackages
- rem 把当前目录下的 system 挂载到注册表指定位置
- reg load hku\!load_p! system
- call :del_reg
- call :edit_reg
- pause
- reg unload hku\!load_p!
- goto :eof
- :del_reg
- rem 对比系统文件,删除注册表中无效记载 ,如果注册表里的项目系统中没有,就删除注册表项目。逐一确认,避免误删。
- for /f %%c in ('reg query !sysdir!') do (
- if not exist "!sysdrv!\windows\system32\DriverStore\FileRepository\%%~nxc" (
- echo %%~nxc No found deleting...
- reg delete %%c
- )
- )
- exit /b
- :edit_reg
- rem 如果注册表中 有记录不一致的情况,将其修改为一致。
- for /f %%c in ('reg query !sysdir!') do (
- for /f "tokens=1 delims=_" %%d IN ("%%~nxc") do (
- for /f "tokens=3" %%e in ('reg query !infs!\%%d /ve ') do (
- if not "%%e"=="" (
- if not "%%e"=="%%~nxc" (
- echo [%%~nxc] [%%e]
- reg add !infs!\%%d /t REG_SZ /ve /d "%%~nxc" /f
- reg add !infs!\%%d /t REG_SZ /v Active /d "%%~nxc" /f
- )
- )
- )
- )
- )
- exit /b
复制代码
|
|