|
PECMD.INI
FBWF P40 L84 H192
EXEC =SHOWDRIVE.EXE `分配可移动盘盘符
ENVI $LOADMODE=-1 `预置装载模式值
ENVI $BootFromCD=-1 `预置是否从光盘启动值
TEAM ENVI W=%WinDir%|ENVI WS=%W%\SYSTEM32|ENVI WSD=%WS%\Drivers
//LOGS %W%\PECMD.LOG
TEAM FILE %W%\TXTSETUP.SI*|FILE %WS%\NTOSKRNL.EX*|FILE %WS%\WIN32K.SYS|PATH #%WS%\CONFIG|FILE %WS%\*.*_|FILE %WSD%\*.SY_
TEAM PATH %SystemDrive%\TEMP|INIT I|EXEC @PECMD.EXE CALL $SHELL32.DLL,DllInstall,#1,U
`修正 USB 驱动程序文件路径
TEAM ENVI V0=HKLM\System\CurrentControlSet\Services|ENVI V1=System32\Drivers
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
REGI %V0%\CDROM\ImagePath=%V1%\CDROM.SYS
//清理启动项。
REGI HKLM\Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad\PostBootReminder=
//不显示我的文档。
REGI HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu\{450D8FBA-AD25-11D0-98A8-0800361B1103}=#1
`注册热键
HOTK #112,PECMD.EXE `热键:F1
HOTK #255,PECMD.EXE SHUT E `热键:键盘关机
`建立基本的快捷方式
LINK %Programs%\附件\记事本,%WS%\NOTEPAD.EXE
LINK %Programs%\附件\命令提示符,%WS%\CMD.EXE
LINK %Programs%\附件\分配可移动盘盘符,%WS%\SHOWDRIVE.EXE,,SHELL32.DLL#8
LINK %Programs%\附件\注册表编辑器,%W%\REGEDIT.EXE
LINK %Programs%\附件\资源管理器,%W%\EXPLORER.EXE,,EXPLORER.EXE,1
//加载EXPLORER.EXE并对屏幕显示的内容进行清理;
//启动时LOGO画面的渐隐淡出效果就是由此处的LOGO语句形成。TEXT语句用于清除显示的文字。
//如果是加载最小模式,就在桌面建立“加载外部配置”连接;如果不是就加载外部配置。
FIND Explorer.EXE,!TEAM SHEL %WinDir%\EXPLORER.EXE|LOGO|TEXT
FIND $%MinMode%=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \外置程序\WinPE.INI,Shell32.dll,26!TEAM TEXT|LOAD \外置程序\WinPE.INI
`修改注册表和相关文件名以支持 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=|ENVI $BootFromCD=
TEAM WAIT 8000|SEND 17_,18_,77_,77^,18^,17^|SEND 17_,18_,77_,77^,18^,17^
//LOGS
WINPE.INI
//配置文件开始
FIND MEM>125,LOGO %CurDrv%\外置程序\桌面背景\PELOGO.JPG|WAIT 1250
TEAM TEXT 正在执行基本设置……#0xEE,$20|WAIT 500
//由最小模式启动后加载外置时才调用的过程。定义一些变量。
_SUB Outer_Reload
ENVI Programs=%USERPROFILE%\「开始」菜单\程序
ENVI Desktop=%USERPROFILE%\桌面
ENVI QuickLaunch=%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch
_END
//由最小模式启动后加载外置时,调用Outer_Reload过程以定义一些变量。
FIND Explorer.EXE,CALL Outer_Reload
ENVI CurDir=%CurDrv%\外置程序
USER 宏图三胞亚细亚店
WALL %CurDir%\桌面背景\PEWallPaper.JPG
//对于笔记本键盘,可以去掉下面命令的注释,以避免打开数字键
//NUMK 0
//在桌面显示网上邻居
REGI HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu\{208D2C60-3AEA-1069-A2D7-08002B30309D}=#0
//清理掉硬盘中已存在的虚拟内存页面文件。
ENVI PF=Pagefile.sys
TEAM FILE C:\%PF%|FILE D:\%PF%|FILE E:\%PF%|FILE F:\%PF%|FILE G:\%PF%|FILE H:\%PF%|FILE I:\%PF%|FILE J:\%PF%|FILE K:\%PF%|FILE L:\%PF%|FILE M:\%PF%|FILE N:\%PF%|FILE O:\%PF%|FILE P:\%PF%|FILE Q:\%PF%|FILE R:\%PF%|FILE S:\%PF%|FILE T:\%PF%
//询问是否设定虚拟内存。
_SUB IFSetPageFile
TEAM TEXT 是否设置虚拟内存?|ENVI YESNO=YES
MESS 您的计算机物理内存较少,某些外置程序的运行可能需要用到\n虚拟内存。设置了虚拟内存,有助于提高系统的速度和稳定性;\n如果您需要保护并恢复硬盘分区数据,可跳过虚拟内存的设置。\n \n您确定要设置虚拟内存吗?(建议设置,30 秒后默认选择否)@设置虚拟内存 #YN *30000 $N
IFEX $YESNO=YES,Call SetPageDrv!TEXT 没有建立虚拟内存……
WAIT 500
_END
//设置虚拟内存。
_SUB SetPageDrv
TEAM TEXT 正在设定虚拟内存……|ENVI $TARGET_ROOT=
BROW * $请选择虚拟内存文件存放的分区,取消则从D盘开始自动选择分区。
IFEX $TARGET_ROOT=,TEXT 正在设定虚拟内存(自动选择存放分区)……|PAGE D:\%PF% 192 256!TEXT 正在设定虚拟内存(虚拟内存存放在 %TARGET_DRIVE% 盘)……|PAGE %TARGET_DRIVE%\%PF% 192 256
_END
//物理内存低于 256MB 时询问是否设定虚拟内存。
FIND MEM<256,CALL IFSetPageFile
//挂接硬盘上 Windows 系统的字体,如果因字体过多造成启动极其缓慢或无法启动,请关闭下面的命令
//FONT C:\WINDOWS\Fonts
TEXT 正在加载外置程序……
//建立外置程序加载的可行性报告,如果设置了虚拟内存或者可用内存大于一定数值,则加载有关的外置组件
//此行有两条语句,“|”号前面的语言句是在Temp文件夹中建立一个RPT_OK.CMD文件,文件内容为一条命令行语句:
//FOR %%I IN (C D E F G H I J K L M N O P Q R S T) DO IF EXIST %%I:\PAGEFILE.SYS PECMD LINK %Temp%\RPT_OK,%SystemRoot%
//该语句的作用为在C D E F G H I J K L M N O P Q R S T几个盘中寻找页面文件,如果找到,将在Temp文件夹中建立一个RPT_OK.LNK文件以标志已建立虚拟内存。
//不用担心硬盘中可能会存在其它的页面文件而影响结果,因为前面已有一条语句清理掉硬盘中已存在的虚拟内存页面文件了。
//“|”号后面的语言句是执行刚生成的RPT_OK.CMD文件,以真实执行判断并生成标志。
TEAM EXEC !=CMD.EXE /C ECHO FOR %%I IN (C D E F G H I J K L M N O P Q R S T) DO IF EXIST %%I:\PAGEFILE.SYS PECMD LINK %Temp%\RPT_OK,%SystemRoot%>%TEMP%\RPT_OK.CMD|EXEC !=%TEMP%\RPT_OK.CMD
//设置自解压包的运行条件,如设置了虚拟内存,则建立运行条件,否则根据可用内存大小设置不同的运行条件
//具体点是:如果已经设置虚拟内存或可用内存大于60M,将在Temp文件夹中建立一个RPT_OK60.LNK文件以标志可运行自解压包。
IFEX %Temp%\RPT_OK.LNK,LINK %Temp%\RPT_OK60,%SystemRoot%!IFEX MEM>60,LINK %Temp%\RPT_OK60,%SystemRoot%
//如果设置了虚拟内存或可用内存大于 120MB,则设置IFWait变量为空以使下面的部分命令为无阻塞运行,否则设置IFWait变量为=使其排队执行。
ENVI IFWait==
IFEX %Temp%\RPT_OK.LNK,ENVI IFWait=!IFEX MEM>120,ENVI IFWait=
//安装基本的运行库文件。
EXEC =%CurDir%\PE_OuterPart\Outer_Base.EXE
//如果X:盘有足够剩余空间和自解压包的运行条件成立,就按照一定条件执行下面的外置程序。是否为无阻塞运行则由前面的语句判定。
//安装WINRAR。
IFEX %SystemDrive%\>10,IFEX %Temp%\RPT_OK60.LNK,EXEC =%CurDir%\WinRAR\WinRAR.EXE
//安装输入法FREEWB。
IFEX %SystemDrive%\>10,IFEX %Temp%\RPT_OK60.LNK,EXEC =%CurDir%\FREEWB\FREEWB.EXE
//安装管理工具。
IFEX %SystemDrive%\>20,IFEX %Temp%\RPT_OK60.LNK,EXEC %IFWait%%CurDir%\PE_OuterPart\MMC.EXE
//安装一些额外附件,例如:画图等。
IFEX %SystemDrive%\>10,IFEX %Temp%\RPT_OK60.LNK,EXEC %IFWait%%CurDir%\PE_OuterPart\Outer_Common.exe
//检查上面的安装语句是否执行成功,如果执行失败就在桌面建立相应的快捷方式以便手动运行。
//如果Outer_Base.EXE解压失败就在桌面建立一个快捷方式以便手动运行。
IFEX %SystemRoot%\System32\DESKADP.DLL,!LINK %Desktop%\安装基本库文件,%CurDir%\PE_OuterPart\Outer_Base.EXE
//如果WinRAR.EXE解压失败就在桌面建立一个快捷方式以便手动运行。
IFEX %ProgramFiles%\WinRAR\WINRAR.EXE,!LINK %Desktop%\安装WINRAR,%CurDir%\WINRAR\WINRAR.EXE
//如果FREEWB.EXE解压失败就在桌面建立一个快捷方式以便手动运行。
//IFEX %ProgramFiles%\FreeWB\REGISTRY.EXE,!LINK %Desktop%\安装FreeWB输入法,%CurDir%\FREEWB\FREEWB.EXE
_SUB CheckLink
//如果MMC.EXE解压失败就在桌面建立一个快捷方式以便手动运行。
IFEX %SystemRoot%\System32\MMC.EXE,!LINK %Desktop%\安装管理工具,%CurDir%\PE_OuterPart\MMC.EXE
//如果Outer_Common.exe解压失败就在桌面建立一个快捷方式以便手动运行。
IFEX %SystemRoot%\System32\MSPAINT.EXE,!LINK %Desktop%\安装额外的附件,%CurDir%\PE_OuterPart\Outer_Common.exe
_END
//只有IFWait变量为=时才有可能解压失败,并执行相关检查。
IFEX $IFWait==,CALL CheckLink
//不自动启用显卡,加快进入桌面的速度。
//如果你要恢复此功能请将下面几行的注释符“//”去掉即可。
//_SUB IfSetDisplay
// TEAM TEXT 3 秒钟内按住 Ctrl 键忽略显卡驱动安装……|WAIT 3000
// FIND KEY=17,!Call SetDisplay
//_END
//_SUB SetDisplay
// TEAM EXEC !%CurDir%\PE_OuterPart\Start_VGA.CMD DISP W800 H600 B16|FILE %Desktop%\启用显卡支持.*
//_END
//物理内存达到 128MB 或者设置了虚拟内存,则自动加载显卡驱动,否则仅在桌面生成一个“启用显卡支持”的快捷方式
//LINK !%Desktop%\启用显卡支持,%CurDir%\PE_OUTERPART\Start_VGA.CMD,,%CurDir%\PE_OUTERPART\Outer_Base.EXE
//FIND MEM>127,Call IfSetDisplay!IFEX %Temp%\RPT_OK.LNK,Call IfSetDisplay
//创建自启动快捷方式,这些快捷方式将在加载桌面后被运行。
//该快捷方式将常用文档与对应外置程序建立关联。主要是进行注册表操作。
LINK !%Programs%\启动\注册程序,%SystemRoot%\SYSTEM32\PECMD.EXE,EXEC @%CurDir%\REGDOC.CMD,%SystemRoot%\SYSTEM32\SHELL32.DLL,43
//这部分代码,要由最后一行开始看起才容易理解。它们负责处理外置程序的连接和注册。
_SUB RunMinMode2
//最小模式的相关启动并加载IE。
FILE %Desktop%\加载外部配置.LNK
FILE %Programs%\启动\注册程序.LNK
EXEC @%CurDir%\LOADKJ.CMD IE
EXEC @%CurDir%\REGDOC.CMD
_END
_SUB RunMinMode1
//最小模式的相关启动但不加载IE。
FILE %Desktop%\加载外部配置.LNK
FILE %Programs%\启动\注册程序.LNK
EXEC @%CurDir%\LOADKJ.CMD
EXEC @%CurDir%\REGDOC.CMD
_END
_SUB InstallIE3
//不安装IE并继续启动。
//在桌面建立安装IE的快捷方式,以便手动安装。
LINK %Desktop%\安装IE,%CurDir%\IE6.0\IE6_Setup.EXE
//如果是最小模式,就执行最小模式的相关启动但不加载IE。否则在启动项建立一个不加载IE的启动快捷方式,这个快捷方式将在加载桌面后被运行。
IFEX %Desktop%\加载外部配置.LNK,CALL RunMinMode1!LINK !%Programs%\启动\创建快捷方式,%SystemRoot%\SYSTEM32\PECMD.EXE,EXEC @%CurDir%\LOADKJ.CMD,%SystemRoot%\SYSTEM32\SHELL32.DLL,21
_END
_SUB InstallIE2
//安装IE并继续启动。
//如果是最小模式,就执行最小模式的相关启动并加载IE。否则在启动项建立一个加载IE的启动快捷方式,这个快捷方式将在加载桌面后被运行。
IFEX %Desktop%\加载外部配置.LNK,CALL RunMinMode2!LINK !%Programs%\启动\创建快捷方式,%SystemRoot%\SYSTEM32\PECMD.EXE,EXEC @%CurDir%\LOADKJ.CMD IE,%SystemRoot%\SYSTEM32\SHELL32.DLL,21
_END
_SUB InstallIE1
//如果自解压包的运行条件成立就执行安装IE并继续启动。否则就执行不安装IE并继续启动。
IFEX %Temp%\RPT_OK60.LNK,CALL InstallIE2!CALL InstallIE3
_END
//如果系统盘剩余空间大于20M就进一步判断,否则执行不安装IE并继续启动。
IFEX %SystemDrive%\>20,CALL InstallIE1!CALL InstallIE3
//清除无用的环境变量和标志文件。
TEAM ENVI PF=|ENVI IFWait=|ENVI $TARGET_ROOT=|FILE %Temp%\RPT_*.*
//加载EXPLORER.EXE并对屏幕显示的内容进行清理;
//在PECMD.INI中也有一条相同的语句,表面上这条语句会先执行并导致PECMD.INI中的那条语句跳过不执行。但在实际测试中发现并没有跳过,并导致重复执行了。因此取消此句。
//事实上,此句好象没什么用。因为在正常启动时,即使没有此句也会通过PECMD.INI中的那条语句加载EXPLORER.EXE。而在最小模式时,由于已经加载EXPLORER.EXE,此句理论上会跳过不执行的。那么还要此句有何用?
//FIND Explorer.EXE,!TEXT 正在载入桌面……|SHEL %SystemRoot%\EXPLORER.EXE|LOGO|TEXT
//配置文件结束
无法加载外置程序。。。。请教,如何修改 |
|