|
楼主 |
发表于 2009-4-6 23:43:32
|
显示全部楼层
WINPE DIY 简介
以天琴星座(lyra)·Build 20090226 为例,同时借鉴论坛其他高手制作的 PE 及教程简单介绍关于 WINPE DIY 的一些内容,其中比较复杂(其实是我不懂)的部分一笔带过,需要的自己搜索吧
一、内核
1. PECMD 常用指令简介(请参考 PECMD.INI,详细命令说明请在 XP 或 PE 下运行 PECMD.EXE 查看)
FBWF:设置FBWF缓存,此处用来设置 X 盘大小
TEAM:执行一组指令
TEXT:在登录画面中或桌面窗口显示文字,可以设置文字的颜色、位置、字体大小
WAIT:暂停或等待指定时间后再继续执行命令,单位毫秒
加前导“-” 表示在指定的等待时间内遇到任何按键即中止等待,否则直至等待时间结束
FIND:依据条件表达式是否成立来确定执行后面两条指令的一条
ENVI:设置或清除环境变量
FILE:根据操作符操作文件或目录,没有操作符则表示删除操作
LOGS:启用日志以便记录每条命令的执行结果
配置文件结束之前,必须调用一次不带参数的"LOGS"命令,以关闭日志文件(确保日志写入文件)
PATH:操作目录,用于设置PECMD.EXE的当前工作目录或建立目录或删除目录
INIT:执行最基本初始化
EXEC:执行 EXE 、BAT、CMD 程序
CALL:调用DLL函数 或 调用子过程
REGI:读取或设置、删除注册表数据
HOTK:设置系统热键,并指定该热键执行的命令
LINK:创建快捷方式,如桌面和程序菜单
RAMD:设置虚拟磁盘
LOAD:按顺序逐条运行配置文件中的命令
SHEL:加载指定的SHELL,并将SHELL锁定
LOGO:设置或关闭登录画面
WALL:设置壁纸
MOUN:将WIM文件中的某个映像挂载到指定的目录中或卸下已经挂载上的映像文件
NUMK:控制小数字键盘的开关状态
IFEX:依据条件表达式是否成立来确定执行后面两条指令的一条
2. txtsetup.sif
TXTSETUP.SI_为 cab 压缩格式,解压即可得 txtsetup.sif,其中包含了 sata、raid 驱动的描述(驱动程序在 SYSTEM32\DRIVERS),修改比较复杂
其中有一点常见的是 PE 启动时的提示,即 [SetupData] 中的 loaderprompt
天琴星座 PE 中为:loaderprompt="Starting Lyra SuperMicro Windows PE ..."
3. 注册表修改
我所知道的注册表文件有 3 个,SYSTEM32 下的 SETUPREG.HIV(由 cab 格式的 SETUPREG.HI_ 解压得到),SYSTEM32\CONFIG 下的 DEFAULT 和 SOFTWARE
a)打开regedit,选中 HKEY_LOCAL_MACHINE(修改 SETUPREG.HIV 或 SOFTWARE)或 HKEY_USERS(修改 DEFAULT,这个文件也可以加载到 HKEY_LOCAL_MACHINE 修改)
b)选择“文件->加载配置单元->选择你要修改的注册表文件->打开”,输入项名称时注意不能和当前项下面子项重名
c)修改加载项中的相关内容,完毕后选中加载的项,选择“文件->卸载配置单元->是”
4. SHELL32.DLL的修改
用 Resource Hacker 可以修改其中的注册表项(REGINST)、位图、图标、菜单等内容,比较复杂,下面列举一个简单的注册表修改
修改注册用户(RegisteredOwner)和公司(RegisteredOrganization),这两项在“系统属性”“常规”页面的“注册到”中显示
用查找功能定位到 RegisteredOwner,将最后一个字符串修改为你需要的名称,选择编译脚本,选择“文件->保存”
把修改的 SHELL32.DLL 替换到核心的 ISO 中,重新打包为 cab 格式的 WINPE.IS_
这两项还有一个简单的修改方法就是修改 PECMD.INI(参考 PECMD 的 USER 命令),如在 PECMD.INI 中增加:
5. 加入 ImDisk 支持并将外置程序 Ramdisk 的 Y盘替换为 ImDisk
ImDisk 可以加载 img、iso等格式的文件,使用控制面板中的功能可以修改文件大小,也可以生成不关联文件的虚拟内存盘
a)修改注册表
下载新版 PECMD,其中的 ImDisk_for_PE.REG 需要导入到 SETUPREG.HIV
注意 ImDisk_for_PE.REG 中的路径为 HKEY_LOCAL_MACHINE\_PE_,因此需要将 SETUPREG.HIV 加载到 HKEY_LOCAL_MACHINE,项目名称为 _PE_
双击 ImDisk_for_PE.REG 导入到注册表,查看 HKEY_LOCAL_MACHINE\_PE_\ControlSet001\Services\,如果下面有 ImDisk 子项则导入成功
顺便删除注册表中两条 Ramdisk Y盘的信息,分别为
HKEY_LOCAL_MACHINE\_PE_\ControlSet001\Services\Ramdriv
HKEY_LOCAL_MACHINE\_PE_\ControlSet001\Enum\Root\UNKNOWN
在左侧选中项目,右键->删除
卸载 _PE_,将修改后的 SETUPREG.HIV 压缩为 cab 格式的 SETUPREG.HI_,替换到内核中
b)加入相关文件
将 PECMD 包中的 IMDISK.SYS 加入到内核 SYSTEM32\DRIVERS 下
将 IMDISK.CPL、IMDISK.EXE、IMDSKSVC.EXE 加入到 SYSTEM32 下,附件中有,也可以从其他已加入 ImDisk 的 PE 中提取
c)修改 PECMD.INI,加入 ImDisk 虚拟盘
EXEC !PECMD.EXE RAMD ImDisk,L1,FAT,Y:,ImDisk
其中 L1 表示最小 1M,FAT 表示格式化为 FAT 格式(虚拟盘太小,不能格式化为 NTFS 格式),Y 表示盘符,详细信息请参考 PECMD
注意:ImDisk 格式化需要 FMIFS.DLL 支持,天琴星座的内核中没有 FMIFS.DLL,而是放在了外置程序的 PE_OUTERPART 下面的 COMMON.7Z 中
所以若想将 Y 盘修改为 ImDisk,请将 FMIFS.DLL 加入到内核
d)在 PECMD.INI 增加如下内容,以加入 ImDisk 右键支持
`注册IMDISK右键
CALL RegImdRk
`注册IMDISK右键
_SUB RegImdRk
REGI HKCR\Drive\shell\ImDiskSaveImage\=保存ImDisk虚拟磁盘
REGI HKCR\Drive\shell\ImDiskSaveImage\command\=rundll32.exe imdisk.cpl,RunDLL_SaveImageFile %L
REGI HKCR\Drive\shell\ImDiskUnmount\=卸载ImDisk虚拟磁盘
REGI HKCR\Drive\shell\ImDiskUnmount\command\=rundll32.exe imdisk.cpl,RunDLL_RemoveDevice %L
REGI HKLM\SOFTWARE\Classes\Ultraiso\shell\ImDiskMountFile\=加载为ImDisk虚拟磁盘
REGI HKLM\SOFTWARE\Classes\Ultraiso\shell\ImDiskMountFile\command\=rundll32.exe imdisk.cpl,RunDLL_MountFile %L
REGI HKLM\SOFTWARE\Classes\Winimage\shell\ImDiskMountFile\=加载为ImDisk虚拟磁盘
REGI HKLM\SOFTWARE\Classes\Winimage\shell\ImDiskMountFile\command\=rundll32.exe imdisk.cpl,RunDLL_MountFile %L
_END
把修改后的 PECMD.INI 替换到内核中
e)保存修改后的内核 WINPE.ISO,压缩为 WINPE.IS_,修改完毕
6. 修改默认的文件夹视图方式
a)将 SYSTEM32\CONFIG 下的 DEFAULT,加载到 HKEY_USERS,比如项目名称为 PE
b)将 HKEY_USERS\PE\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams 导出
c)将导出文件中关于文件夹视图部分的内容为
"Settings"=hex:08,00,00,00,04,00,00,00,01,00,00,00,00,77,7e,13,73,35,cf,11,ae,\
69,08,00,2b,2e,12,62,04,00,00,00,01,00,00,00,43,00,00,00
d)替换为你想要的格式,不同格式对应内容如下
平铺查看
"Settings"=hex:08,00,00,00,06,00,00,00,01,00,00,00,e5,25,f1,65,e1,7b,10,48,ba,\
9d,d2,71,c8,43,2c,e3,04,00,00,00,1a,00,00,00,43,00,00,00
缩略图查看
"Settings"=hex:08,00,00,00,05,00,00,00,01,00,00,00,90,b2,eb,8b,d0,52,d0,11,b7,\
f4,00,c0,4f,d7,06,ec,04,00,00,00,07,00,00,00,43,00,00,00
列表查看
"Settings"=hex:09,00,00,00,03,00,00,00,00,00,00,00,e0,a5,1f,0e,73,35,cf,11,ae,\
69,08,00,2b,2e,12,62,04,00,00,00,01,00,00,00,43,00,00,00
详细信息查看
"Settings"=hex:08,00,00,00,04,00,00,00,01,00,00,00,00,77,7e,13,73,35,cf,11,ae,\
69,08,00,2b,2e,12,62,04,00,00,00,01,00,00,00,43,00,00,00
图标查看
"Settings"=hex:08,00,00,00,01,00,00,00,01,00,00,00,e0,d0,57,00,73,35,cf,11,ae,\
69,08,00,2b,2e,12,62,04,00,00,00,20,00,00,00,43,00,00,00
e)保存文件->导入到注册表->卸载单元->替换到内核
还有一个简单方法就是在 PECMD.INI 中通过设置注册表数据修改
如设置为图标查看,在 PECMD.INI 中增加:
REGI HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Settings=@08,00,00,00,01,00,00,00,01,00,00,00,e0,d0,57,00,73,35,cf,11,ae,69,08,00,2b,2e,12,62,04,00,00,00,20,00,00,00,43,00,00,00
其中 @ 后面的内容即为上面列举的 "Settings"=hex: 后面的内容,把续行符 \ 去掉即可
7. 系统盘 X、外置程序盘 Y
a)PE 启动后系统所用盘符 X,查找相关资料后结论基本是不可修改
b)外置程序所在虚拟盘由 SETUPREG.HIV 中两个子项定义
HKEY_LOCAL_MACHINE\_PE_\ControlSet001\Services\Ramdriv
HKEY_LOCAL_MACHINE\_PE_\ControlSet001\Enum\Root\UNKNOWN
其中 HKEY_LOCAL_MACHINE\pe\ControlSet001\Services\Ramdriv\Parameters 下面的
"DriveLetter"="Y:" 为虚拟盘符,修改后还需要修改 WINPE.INI 中相关内容
"DiskSize"=dword:00100000 为虚拟盘大小,单位字节,十六进制数 100000
即为十进制 1048576 = 1024*1024 = 1M
8. PECMD 托盘菜单(没有测试)
用 Resource Hacker 打开 PECMD.EXE,选择菜单
托盘菜单默认没有宽屏的分辨率,自己增加或修改后编译脚本->保存
下图中字符串 10025 为 PE 的超级登录口令的 MD5(需要者自己搜索“字符串 MD5”,网上有生成字符串 MD5 值的网页)
即使 INI 文件中的 SHEL 命令设置了口令,用这个超级口令依然可以登录 PE
字符串 10026 定义了一个热键,默认对应设置 800*600 的分辨率
9. 主配置文件(PECMD.INI)的指定
加载注册表文件 SETUPREG.HIV,下图的 CmdLine 中指定了主配置文件的路径和文件名
10. 登录画面、壁纸、系统信息及 OEM 信息(没有测试)
a)WINPE.INI(也有可能在PECMD.INI)中 LOGO 指令后面的图片为“登录画面”
b)WINPE.INI(也有可能在PECMD.INI)中 WALL 指令后面的图片为“壁纸”
c)注册号,加载注册表文件 SYSTEM32\CONFIG\SOFTWARE,如下图的 ProductId
这儿应该也可以设置注册用户(RegisteredOwner)和公司(RegisteredOrganization)没有测试和 SHELL32.DLL 中信息的加载顺序如何
d)系统属性常规页的左上角图片和右上角的一些信息可以用 Resource Hacker 打开 SYSTEM32\SYSDM.CPL
可以看一下位图1,字符串12、13,更多信息请搜索“SYSDM.CPL 修改”
e)左下角为 OEM 图片的显示位置,做一张170X120左右的BMP文件,文件名指定为 OEMLOGO.BMP,放到 SYSTEM32 目录即可
f)右下角可以显示 OEM 文字信息按钮,用固定格式写一个文本文件,文件名指定为 OEMINFO.INI,放到 SYSTEM32 目录,格式如下
[General]
Manufacturer=天琴星座
Model=Windows XP SP3 PE
[Support Information]
Line1=版本:090226
Line2=PE DIY
“=”号后面的内容随意修改,Line可以继续增加,更多信息请搜索“XP OEM 信息”
11. 加入 WIM 文件关联
论坛中两位高手的工具(lxl1638 的 WimTool 和 nn2nn 的 WiMNT)都非常强大且简单易用,下面以 WiMNT 为例说明加入的方法
a)将 WIMNT.EXE 加入到内核的 SYSTEM32 目录下
b)在 PECMD.INI 中增加如下内容
`注册WIM文件关联
EXEC !%WS%\WIMNT.EXE /REG /M /MP Y:\WIM `注册WIM文件与WIMNT关联
c)注意 PE 中外置程序加载在 Y 的根下
代码为 WINPE.INI 中的
MOUN %CurDrv%\MINIPE\OP.WIM,Y:,1
ENVI OPDir=Y:\外置程序
由于 WIM 文件的默认挂载目录设置为 Y:\WIM,所以应将外置也挂载到 Y 下的一个目录,如修改为
PATH Y:\PROGRAM `在 Y 盘根下建立目录 PROGRAM
MOUN %CurDir%\OP.WIM,Y:\PROGRAM,1
ENVI OPDir=Y:\PROGRAM\外置程序
12. 增加搜索各分区根下 PETOOLS 目录文件功能,并在桌面建立快捷方式
a)在 SYSTEM32 下增加文本文件 PETOOLS.INI,内容为
`生成目标文件的快捷方式
_SUB MAKELINK
LSTR Drive=%TOOLS%,1
ENVI V0=%StartMenu%\%Drive%盘PETools
LINK %V0%\target,%TOOLS%
EXEC =!CMD /C "COPY "%WINDIR%\SYSTEM32\Desktop.in1" "%V0%\Desktop.ini""
TEAM SITE %V0%\*.*,+A+H+S|SITE %V0%,+R+S|ENVI V0=
TEAM FORX %TOOLS%\*.INI,TOOLSINI,0,LOAD %TOOLSINI%|ENVI TOOLSINI=
`TEAM TEXT %TOOLS%已经被装载到了开始菜单。#0xEE,$20|WAIT 1000|TEXT
MESS %TOOLS%已经被装载到了开始菜单。@挂载PETOOLS工具 #OK *2000
_END
`搜索PETOOLS目录下文件
FORX @\PETOOLS,TOOLS,0,CALL MAKELINK
b)在 SYSTEM32 下增加文本文件 DESKTOP.IN1,内容为
[.ShellClassInfo]
CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
Flags=2
c)在 PECMD.INI 增加建立桌面快捷方式的指令
LINK %Desktop%\搜索装载PETOOLS到开始菜单,PECMD.EXE,LOAD %WS%\PETOOLS.INI,Shell32.dll#45
纯内核启动时可用
二、外置
1. 显卡、声卡、网卡驱动
大概可以如下修改:
使用提取工具,提取要加入的驱动,加入到外置程序相应的 cab 包中,如显卡 DRIVERS_VGA.CAB,对应的加载文件为 START_VGA.CMD(这个可能不需要修改)
2. 外置程序
如增加 WINPM9
a)使用 WIM 工具可写加载 OP.WIM(若为 img 格式的外置程序,先用 ImDisk 可写加载 img 文件,Windows 下可用的 ImDisk 下载地址为 http://www.ltr-data.se/opencode.html)
b)在“外置程序”目录建立新目录“WINPM”,将 WINPM9 的所有文件放到 WINPM 目录
c)卸载 OP.WIM 并确认更新
d)在 WINPE.INI 中增加
LINK %Programs%\磁盘光盘工具\Paragon Partition Manager 9.0,%OPDir%\WINPM\Program\launcher.exe,,%OPDir%\WINPM\Program\launcher.ico
需要添加注册表信息的程序可将相关内容添加到“外置程序”下的 REGDOC.CMD 中
不同版本程序的更新可能只需要用新程序覆盖原来的即可
三、DOS 工具
一般为 img 格式文件,可以用 WinImage 修改或用 ImDisk 加载修改
DOS 工具的启动顺序为:
CONFIG.SYS -> AUTOEXEC.BAT(批处理)
AUTOEXEC.BAT 中可能会再加载其他的批处理文件,用文本编辑工具即可修改这些文件
[ 本帖最后由 wind_fsm 于 2009-6-7 23:12 编辑 ] |
|