量产USBCDROM后的PE无法加载外置程序的原因及解决方法(转)

PE的外置程序是通过调用 WinPE.INI 实现的,没有正常加载外置程序的原因就是PE在启动过程中没有找到USBCDROM中的这个WinPE.ini! 
而调用WinPE.INI的是PE系统 system32目录下的 PECMD.INI 文件,需要修改这个 PECMD.INI 文件,改变WinPE.INI的调用方式。 

PECMD.INI 原内容: 
引用
//配置文件开始 
FBWF P40 L32 H96 
TEAM TEXT 3 秒钟内按住 Ctrl 键可进入最小配置模式……#0xEE,L20,T560,R500,B580 $20|WAIT 3000 
FIND KEY=17,ENVI MinMode=Yes|Text 正在加载最小配置模式……!Text 正在加载标准配置模式…… 
TEAM ENVI W=%WinDir%|ENVI WS=%W%\SYSTEM32|ENVI WSD=%WS%\Drivers 
TEAM FILE %W%\TXTSETUP.SI*|FILE %WS%\NTOSKRNL.EX*|FILE %WS%\WIN32K.SYS|PATH #%WS%\CONFIG|FILE %WS%\*.*_|FILE %WSD%\*.SY_ 
TEAM LOGS %W%\PECMD.LOG|PATH %SystemDrive%\TEMP|INIT I|EXEC @PECMD.EXE CALL $SHELL32.DLL,DllInstall,#1,U 

TEAM ENVI V0=HKLM\System\CurrentControlSet\Services|ENVI V1=System32\Drivers `修正 USB 驱动程序文件路径 
REGI %V0%\USBHUB\ImagePath=%V1%\USBHUB.SYS 
REGI %V0%\USBCCGP\ImagePath=%V1%\USBCCGP.SYS 
REGI %V0%\USBEHCI\ImagePath=%V1%\USBEHCI.SYS 
REGI %V0%\USBOHCI\ImagePath=%V1%\USBOHCI.SYS 
REGI %V0%\USBSTOR\ImagePath=%V1%\USBSTOR.SYS 
REGI %V0%\USBUHCI\ImagePath=%V1%\USBUHCI.SYS 
REGI %V0%\HIDUSB\ImagePath=%V1%\HIDUSB.SYS 
REGI %V0%\MOUCLASS\ImagePath=%V1%\MOUCLASS.SYS 
REGI %V0%\MOUHID\ImagePath=%V1%\MOUHID.SYS 
REGI %V0%\KBDCLASS\ImagePath=%V1%\KBDCLASS.SYS 
REGI %V0%\KBDHID\ImagePath=%V1%\KBDHID.SYS 

HOTK #112,PECMD.EXE `注册热键:F1 帮助 

LINK %Programs%\附件\记事本,%WS%\NOTEPAD.EXE 
LINK %Programs%\附件\命令提示符,%WS%\CMD.EXE 
LINK %Programs%\附件\注册表编辑器,%W%\REGEDIT.EXE 
LINK %Programs%\附件\资源管理器,%W%\EXPLORER.EXE,,EXPLORER.EXE,1 
LINK %Desktop%\命令提示符,%WS%\CMD.EXE 
LINK %StartMenu%\PECMD使用说明,%WS%\PECMD.EXE 

FIND $MinMode=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \MiniPE\WinPE.INI,Shell32.dll,26!TEXT|LOAD \MiniPE\WinPE.INI
FIND Explorer.EXE,!SHEL %WinDir%\EXPLORER.EXE|LOGO|TEXT

`修改注册表和相关文件名以支持 Vista 安装 
REGI HKLM\SYSTEM\CurrentControlSet\Control\MiniNT\! 
EXEC !CMD.EXE /C "REN %WinDir%\SYSTEM32\HALACPI.DLL HAL.DLL" 

`如果不能给 USB 移动存储设备迅速分配盘符或者关机缓慢,请尝试重启 AudioSrv 服务(对于部分 HD 声卡) 
TEAM EXEC =PECMD SERV !AudioSrv|SERV AudioSrv 

`杀掉无用进程并删掉 X: 盘可删除文件以节省空间 
TEAM WAIT 5000|KILL SMSS.EXE|KILL WINLOGON.EXE|FILE %WS%\SMSS.EXE|FILE %WS%\WINLOGON.EXE 
TEAM ENVI W=|ENVI WS=|ENVI WSD=|ENVI V0=|ENVI V1= 
TEAM WAIT 12000|SEND 17_,18_,77_,77^,18^,17^|SEND 17_,18_,77_,77^,18^,17^ `如果 PECMD 托盘图标不显示,请用此命令 
LOGS 
//配置文件结束


红色字体处即为调用WinPE.INI的命令,解释一下: 

先判断是否以最小配置模式启动(FIND $MinMode=Yes),
如是,则生成加载外部配置的桌面图标(LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \MiniPE\WinPE.INI,Shell32.dll,26),
如否,则清除桌面显示文本(TEXT)并调用外部配置(LOAD \MiniPE\WinPE.INI)

但为何3个U盘中有的找到有的没找到,这个原因就复杂了,我只能认为是U盘主控芯片在系统启动过程中不同的引导机制造成的。而在手动进入最小配置模式后,均可从桌面加载外部配置,说明PE引导后都能找到WinPE.ini调用程序。   可能的原因是量产引导的,量产成CDROM,实际是个的虚拟光驱,而PE的驱动不完善,或者说NT5内核识别这类驱动器的能力不完善(NT5系统出现比现在流行的量产技术早),所以在启动初期PE无法识别这样量产出来的虚拟光驱(加载内核时,PE的内核文件实际是DOS驱动识别出来的),到启动后期PE的驱动加载完成后,量产出来的虚拟光驱可以被PE识别了,所以启动后手动能加载外置。


最稳妥的方式是待PE加载了系统核心EXPLORER.EXE后,再调用WinPE.INI。 

修改 PECMD.INI 文件,将: 

复制代码
  1. FIND $MinMode=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \MiniPE\WinPE.INI,Shell32.dll,26!TEXT|LOAD \MiniPE\WinPE.INI 
    FIND Explorer.EXE,!SHEL %WinDir%\EXPLORER.EXE|LOGO|TEXT

改为: 
复制代码
  1. FIND Explorer.EXE,!SHEL %WinDir%\EXPLORER.EXE|TEXT 
    FIND $MinMode=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \MiniPE\WinPE.INI,Shell32.dll,26!RUNS PECMD.EXE LOAD \MiniPE\WinPE.INI,加载外置 
    TEAM TEXT|LOGO


问题解决! 



注:这个 PECMD.INI 文件位于PE核心镜像包中,修改方法如下: 
(以老九 WinPE 老毛桃修改之撒手不管版(Build 070911)为例【BootCD_070911.ISO  114,300,928 字节】) 
1、用UltraISO或Winrar打开BootCD_070911.ISO,提取MINIPE目录中的 WinPE.IS_ 文件; 
2、用Winrar解压 WinPE.IS_ 文件得到 WinPE.ISO; 
3、用UltraISO打开 WinPE.ISO,提取 WXPE\SYSTEM32 下的 PECMD.INI; 
4、修改 PECMD.INI 文件; 
5、改好的PECMD.INI替换WinPE.ISO中的原PECMD.INI,并保存WinPE.ISO; 
6、用 CAB 打包工具将 WinPE.ISO 重新打包为 WinPE.IS_ ;(用最大压缩比率以节省空间) CAB打包工具
7、再将 WinPE.IS_ 放到老毛桃的光盘映像中替换原来的 :)

原文地址:https://www.cnblogs.com/rainbowzc/p/2093815.html