zoukankan      html  css  js  c++  java
  • 量产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_ 放到老毛桃的光盘映像中替换原来的 :)

  • 相关阅读:
    sql server delete语句
    sql server 通配符
    sql server join联结
    windows下如何使用两个版本的nodejs
    PHP的Trait 特性
    PHP错误与异常处理try和catch
    laravel belongsTo()&hasOne()用法详解
    Laravel Model 的 fillable (白名单)与 guarded (黑名单)
    js原生,缓动动画封装
    js原生轮播图
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/2093815.html
Copyright © 2011-2022 走看看