从Windows安装镜像中手动制作PE

    自动一键式制作PE的工具不少,如Winbuilder等工具都可以,但是用这些工具都无法查看其中的原理,今天在网上看到了一个手动制作PE的深度好贴,按照上面所写实践了一下,明白了下PE的制做原理,在这里记录并转载下,并回顾一下步骤:

    

1. 修改ISO文件

UltraISO打开安装镜像文件,BIOS启动下保留如下结构即可:

BOOT\BCD
BOOT\BOOT.SDI
SOURCES\BOOT.WIM
BOOTMGR

2. 获取所需文件权限

为了能够在Win7下顺利制作PE,必须获得相关文件的权限.

2.1 用WimTool解开BOOT.WIM第一个卷(Windows PE)为BOOT文件夹

2.2 获取BOOT文件夹及其子文件的完全控制权
鼠标右键BOOT文件夹->属性->安全选项卡->高级->更改权限->添加->输入everyone->确定->勾选”完全控制”,其他选项会自动勾上->应用于”此文件夹,子文件夹”->确定->删除Everyone,SYSTEM以外的权限项目->勾选”使用可从此对象继承的权限替换所有子对象权限”->所有者选项卡->编辑->其他用户或组->输入everyone->确定->勾选”替换子容器和对象的所有者”->确定

2.3 获取WinPE注册表的完全控制权
2.3.1 加载注册表
“运行”->输入Regedit->加载boot\Windows\System32\config下的DEFAULT,SYSTEM,SOFTWARE分别命名为pe-default,pe-system,pe-software
2.3.2 分别对每个加载单元进行如下操作:
右键->权限->高级->添加->输入everyone->确定->勾选”完全控制”,其他选项会自动勾上->应用于”该对象和子对象”->确定->删除Everyone,SYSTEM以外的权限项目->勾选”使用可从此对象继承的权限替换所有子对象权限”->所有者选项卡->编辑->其他用户或组->输入everyone->确定->勾选”替换子容器和对象的所有者”->确定
——至此,我们就获得了WinPE几乎所有文件的控制权限,后面制作WinPE就非常顺利了.


3. 注册表修改

3.1 选中加载的SOFTWARE单元pe-software

3.2 修改注册表中关于路径的值
在pe-soft下搜索 $windows.~bt\ ,替换为 (空)(就是什么都不写)
在pe-soft下搜索 Interactive User,找到后全部删除.
[没有的就不用改了]

3.3 同理,对pe-default,pe-system也进行此操作

3.4 卸载pe-default,pe-system,pe-software (如果无法卸载,则关掉以管理员身份打开再卸载即可)


4. 启动测试

4.1 打包测试
用WimTool把BOOT文件夹新建映像为BOOT.WIM,原版的BOOT.WIM文件可移到他处作为备份,以便随时还原,保存修改的ISO并测试. 此时成了的PE开机后是CMD命令行。这就是微软原版的PE。

4.2 必要的精简
因为BOOT.WIM镜像原本垃圾文件就多,我们可以适当精简,便于后面的工作.但也不要过火,以免留下后患.
\Windows\fonts /* 可适度删除 */
\Windows\winsxs\Backup /* 可以删除 */
\Windows\System32\zh-TW…zh-HK…uk-UA…sr-Latn-CS…等 /* 存放.dll.mui 的文件夹,仅保留zh-CN,其他都可删除 /

效果图如下(直接借用别人的图):
从Windows安装镜像中手动制作PE_第1张图片


5. 添加explorer

5.1 修改注册表
5.1.1 加载WinPE的注册表文件SOFTWARE为pe-soft,然后导出为pe-soft.reg备用
[其实,熟练的话,在前面的步骤就可以导出备用了.]
5.1.2 修改权限[与前面的操作一样滴]
用WIMTool解压Win7.iso的install.wim文件中最后一个卷(旗舰版Windows),定位到Windows\System32\config下,把software文件加载到注册表,命名为pe-soft.
右键加载的注册表单元pe-soft——>”权限”——>”高级”中添加Everyone的完全控制权限,删掉Everyone和System以外其他用户权限,然后替换所有子项的权限;
右键加载的注册表单元pe-soft——>”权限”——>”高级”中替换”所有者”为Everyone,然后替换所有子项的所有者.
[注意:请重复几次——因为文件过多,一次操作可能有遗漏,软件处理能力有限]
5.1.3 编辑注册表
在pe-soft下搜索 Interactive User,找到后全部删除.
在pe-soft下搜索 C:\ D:\ ,全部替换为 X:\
[注意:RegWorkshop每次只能搜索到1000项,而需要替换的有几千项,需要重复操作几次.
搜索时请将keys/value/data三项都勾选,搜索结果出现在下面的窗口,在搜索结果窗口中选中所有项,鼠标右键→替换或删除]
5.1.4 得到WinPE的SOFTARE完整注册表
把之前导出的pe-soft.reg导进来,覆盖Win7系统的SOFTWARE注册表加载单元pe-soft
[同名在于确保路径统一,以覆盖Win7系统的注册表]
5.1.5 继续修改pe-soft
找到pe-soft下\Microsoft\Windows NT\CurrentVersion\Winlogon下,
把”Shell”=”cmd.exe /k start cmd.exe” 改成 “Shell”=”explorer.exe”
然后,卸载pe-soft.

5.2 准备文件
5.2.1 方案一:精确式
从install.wim中拷贝这些文件到boot.wim中同样的位置:
//进入SHELL需要添加以下文件
Windows\explorer.exe
Windows\zh-CN\explorer.exe.mui
Windows\System32\ExplorerFrame.dll
Windows\System32\zh-CN\explorerframe.dll.mui

//为了稳定而添加的文件
Windows\System32\actxprxy.dll /没有它,会提示”explorer.exe不支持此接口” /
Windows\System32\comctl32.dll
Windows\System32\zh-CN\comctl32.dll.mui
Windows\System32\mscories.dll
Windows\System32\oledlg.dll
Windows\System32\zh-CN\oledlg.dll.mui
Windows\System32\shdocvw.dll
Windows\System32\zh-CN\shdocvw.dll.mui
Windows\System32\shellstyle.dll
Windows\System32\zh-CN\shellstyle.dll.mui

//为了美观而添加的文件——与版权信息,开始菜单按钮等图标有关
Windows\Branding\Basebrd\basebrd.dll
Windows\Branding\Basebrd\zh-CN\basebrd.dll.mui
Windows\Branding\ShellBrd\shellbrd.dll
[注意:若要拓展功能,可参考附件”Win7PE_X64支持文件列表”,不覆盖式拷贝 install.wim 中的文件.若要制作 骨头版WinPE ,反而要开始精简 BOOT.WIM 中原有的文件了.]

5.2.2 方案二:偷懒式
——大家知道,WinPE的灵魂是注册表,文件处理方面较为好办,如有现成的WinPE,可不必大费周章.

偷懒又保险的方法:
可以直接不覆盖式拷贝正常 WinPE 的 Windows 文件夹, winpeshl.ini 不要拷贝!其他文件随便.
要求不高的,选择 骨头WinPE ;要求高的,选择 多功能WinPE ;请自行选择你喜欢的 WinPE 作为基础.

5.3 打包测试
通过上面的步骤,我们得到了”史上最完整的”WinPE的SOFTWARE注册表.现在,重新打包boot.wim,保存修改后的WinPE的ISO.
启动VMWare虚拟机测试,还是命令提示符窗口,不过你现在运行explorer.exe.看看,熟悉的explorer是不是已经出来.

从Windows安装镜像中手动制作PE_第2张图片

6 explorer的初步完善

这里需要利用激活的Win7系统注册表,导入PE后,相关配置和Windows呈现一样的效果,所以,请先在Windows下配置好.
处理的注册表较多,先加载好pe-soft,pe-sys,pe-def.

6.1 explorer 的个性化设置
6.1.1 Advanced配置
这里的配置很重要(下面在正运行的Win7中配置好,将来在PE中explorer的特性就与这些配置一样):
在正在运行的激活的Win7中,打开explorer资源管理器,在菜单→文件夹和搜索选项,在”常规”页面,勾选”显示所有文件夹”和”自动扩展当前文件夹”;在 “查看”页面,按你的习惯勾选(如显示隐藏文件,显示扩展名等),特别注意:一定要勾选”在单独进程中打开文件夹窗口”(否则PE启动后再插入U盘,U盘不可见);然后,定位到Win7的HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced,导出为Advanced.REG,用记事本编辑,” [HKEY_CURRENT_USER\”全部替换为: ” [HKEY_LOCAL_MACHINE\PE-DEF\”,再导入PE-DEF.
6.1.2 其他配置
导出Win7系统以下注册项:
①HKEY_LOCAL_MACHINE\System\ControlSet001\Control\ProductOptions /壁纸出现了/
②HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM /* Desktop Window Manager */
③HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Personalization /* 个性化 */
④HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons /桌面图标的显示隐藏:计算机,回收站,用户的文件,控制面板,网络/
用记事本修改①~④导出的.REG文件,路径分别改为:
①HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\Control\ProductOptions
②HKEY_LOCAL_MACHINE\PE-DEF\Software\Microsoft\Windows\DWM
③HKEY_LOCAL_MACHINE\pe-soft\Microsoft\Windows\CurrentVersion\Personalization
④HKEY_LOCAL_MACHINE\pe-soft\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons
保存修改,全部选中,右键”合并”,即可覆盖到PE的注册表中
6.1.3 显示我的电脑图标
在HideDesktopIcons\NewStartPanel下添加:
“{20D04FE0-3AEA-1069-A2D8-08002B30309D}”=dword:00000000
6.1.4 在pe-sys下\ControlSet001\Control\Lsa添加”LmCompatibilityLevel”=dword:00000002

6.2 win7主题的启用
6.2.1 定位到正在运行的win7注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services下面,导出与win7相关的几项DXGKrnl, monitor,Schedule,Themes,UxSms和vga.
把刚才导出的win7的那6项服务导入到pe-sys下\ControlSet001\services中.
6.2.2 在pe-sys的\Setup\AllowStart\中新建项Themes
6.2.3 这是唯一需要文件修改与添加的地方. 参见 http://bbs.wuyou.net/viewthread.php?tid=167092 用hex编辑器打开winlogon.exe,在其中查找unicode字符串minint,修改其中任一字母,只要和原先不一样即可,比如,改成minins. 下载ux.exe,在运行explorer前运行此小程序即可启用Win7的basic主题. ux.rar (3.97 KB, 下载次数: 914)
/******************************************************************
背景知识:system用户下只能启用basic主题,没有aero特效.
想要启用aero特效的朋友,可搜索无忧相关资料,有详细介绍.不过,本人不建议这么做,因为PE的SYSTEM权限是它生存的意义所在,为此要绕很多圈子.
******************************************************************/
6.2.4 其他需要补充的文件,见附件”Win7PE_X64支持文件列表”
6.2.5 解决X盘的容量过小问题——开启主题等,需耗费内存,这里借机扩充一下
加载注册表system单元,展开至/ControlSet001/Services/FBWF,新建二进制dword(32位)值,命名为WinPECacheThreshold,修改键值为200.(这是512MB,可以根据需要修改键值)
6.2.6 卸载PE的所有注册表加载单元,检验效果.
从Windows安装镜像中手动制作PE_第3张图片


7 通过winpe自带的几个小程序实现一些常用功能.

7.1 驱动的加载程序—Drvload.exe
经常有人问该怎么加入驱动,准备好你的驱动文件,看了下面图片你就清楚了,格式就是drvload (inf文件路径)
从Windows安装镜像中手动制作PE_第4张图片
7.2 winpe工具—Wpeutil.exe
这个工具非常实用,大家可以参看WAIK的帮助文件.如果不用第三方程序,pe的关机和重启就是通过它实现的.下面列了几个有用的
wpeutil shutdown 关机
wpeutil reboot 重启
wpeutil CreatePageFile /path=C:\pagefile.sys.设置虚拟内存
wpeutil DisableFirewall 开关防火墙 (Enablefirewall)

7.3 winpe的初始化设置—Wpeinit.exe

7.3.1 Wpeinit.exe的介绍
Wpeinit 是命令行工具,它在每次启动 Windows PE 时,对其进行初始化.当 Windows PE 启动时,Winpeshl.exe 执行启动 Wpeinit.exe 的 Startnet.cmd.
具体地说,Wpeinit.exe 安装 PnP 设备,处理 Unattend.xml 设置并加载网络资源.
另外,Wpeinit 会将日志消息输出到 c:\Windows\system32\wpeinit.log.

7.3.2 Wpeinit.exe的使用
首先你得建立一个应答文件,打开Windows系统映像管理器,想偷懒的可以直接以win7的安装文件基础,打开安装盘source文件夹下install_windows 7 ultimate.clg.
再新建应答文件,传送Components中的Microsoft-Windows-Setup到pe,在这里可以设置屏幕分辨率,计算机名,页面文件等等,删掉不需要的部分,保存为init.xml
调用如下:
wpeinit.exe /unattend=X:\Users\Default\Documents\init.xml

7.4 explorer的自动载入—Winpeshl.exe
7.4.1 比如,我们可以让winpe自动载入explorer并启用主题,新建ISO\Windows\System32\winpeshl.ini 中内容为:
[LaunchApps]
wpeinit.exe /unattend=X:\Users\Default\Documents\init.xml
ux.exe
X:\windows\explorer.exe
/* 没有应答文件直接运行wpeinit.exe.当然,还可以加载更多的程序,一行一行的添加就行了. */
/******************************************************************
背景知识:Windows PE 提供了三种方法启动自定义脚本:Winpeshl.ini,Startnet.cmd 和 Autounattend.xml.
Windows PE 默认界面是一个命令提示符窗口.但是,您可以创建自定义的 Winpeshl.ini 文件,以运行自己的外壳应用程序(SHELL).也可以创建自己的 Startnet.cmd 版本来运行特定的命令集,批处理文件或脚本.
******************************************************************/
7.4.2 删除startnet.cmd
当你加入上面的Winpeshl.ini文件时,Winpeshl.exe不再检测startnet.cmd是否存在,startnet.cmd已经不起任何作用了,删不删掉都可以.


8 使用windows的其他功能和设置

8.1 windows程序的添加
由于我们直接使用了修改的win7的software注册单元,其他功能的添加就很简单了.基本不用改注册表,直接复制文件就是了.
8.1.1 比如要加入ie8,就复制Program Files\Internet Explorer下所有文件(以及system32文件夹下相关文件)到ISO\Program Files下即可.
[注意:这是64位ie,你要愿意,也可以Program Files(x86)下的32位IE.]
8.1.2 同理,要使用windows的查看图片功能,复制Windows Photo Viewer即可,其他类似.
8.1.3 要用控制面板,控制台,复制相应的cpl和mmc文件,要使winpe支持.net framework, 复制win7的的assembly和Microsoft.NET放进去就可以了(同时支持v2.0,v3.0和v3.5会很大,不知道网上有没有精简的)
8.1.4 64位winpe的32位程序支持(WOW64)同样不需要配置注册表,拷贝syswow64以及system32下的wow相关文件就可以了.
[注意:要支持多少wow64程序取决于你拷贝syswow64文件夹中的文件.和system32中的一样,你不复制mfc.dll不会对你的pe有影响,但是那样你就不能支持需要这个dll的程序.]

8.2 windows服务的添加.
winpe不能安装msi格式的安装包,我们以给winpe添加msi服务为例,添加其他服务类似.
8.2.1 确认文件复制完整后,把加载win7安装文件的system配置单元到注册表并命名为pe-sys.找到下面的ControlSet001\services\msiserver 全部导出备用. 卸载pe-sys.
8.2.2 加载winpe的system配置单元(:ISO\Windows\System32\config下system文件)到注册表并命名为pe-sys,导入刚才导出的msiserver即可.

8.3 windows的一些设置
你要设置计算机名,桌面图片,oem信息和图片,隐藏夹显示与否,开始菜单,任务栏,桌面什么的,网上很多了,这里列举几个:
8.3.1 壁纸与用户头像
壁纸文件:ISO\Windows\system32\winpe.bmp
//修改路径在这里:HKEY_LOCAL_MACHINE\DEFAULT\Control Panel\Desktop\WallPaper
用户头像文件:ISO\ProgramData\Microsoft\User Account Pictures\user.bmp
8.3.2 修改计算机右键属性内容
用ResHacker.exe工具修改Windows\System32\zh-CN下systemcpl.dll.mui文件即可.
8.3.3 开始菜单和桌面
控制开始菜单的显示项目:
\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
桌面图标的显示和隐藏:
\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons
8.3.4 计算机名称的修改
加载PE的system文件,修改如下键值:
Controlset001\Control\ComputerName\ActiveComputerName\ComputerName
Controlset001\Control\ComputerName\ComputerName\ComputerName
Controlset001\Control\Session Manager\Environment\COMPUTERNAME
Controlset001\Services\Tcpip\Parameters\Hostname
Controlset001\Services\Tcpip\Parameters \NV Hostname

8.4 微软拼音的添加: 文件很大,不推荐,我就不写了,真的想要可以看waik的帮助文件,很简单,批处理都给你写好了.


9 一些需要注意的一些地方和其他程序的加入

9.1 用户文件夹的更改,默认在config文件夹下,建议改到X:\Users\Default下,在Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18 下修改.

9.2 计算机管理管理不能在"我的电脑"上用右键打开,加载pe注册表software单元,修改Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage\command,
为 %SystemRoot%\system32\mmc.exe compmgmt.msc

9.3 "关机"按钮无效,可以改software单元的Microsoft\Windows\CurrentVersion\Policies\Explorer 添加 "NoClose"=dword:00000001 或0 移出或显示"关机"按钮

9.4 如果你不添加,桌面右键菜单"小工具"很难看,可以去掉,同样,删除 \Classes\Directory\Background\shellex\ContextMenuHandlers\Gadgets 和 Classes\DesktopBackground\Shell\Gadgets 即可

9.5 MSDaRT工具的加入,可以用7zip打开MSDaRT65_x64.msi文件,提取其中的tools.cab和Sweeper.cab中mount文件夹合并到pe即可(32位类似).

9.6 绿色程序的加入与快捷方式等
如果文件不大,可以直接放到 program files 目录下并和boot.wim一起打包.你也可以单列出来放到光盘上,或是打包成新的wim文件,进入pe后再挂载.
9.6.1 "桌面"快捷方式在\Users\Default\Desktop .
9.6.2 "所有程序"快捷方式在
\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
                            \ProgramData\Microsoft\Windows\Start Menu\Programs
9.6.3 锁定到任务栏:
快捷方式在 \Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar,
另外还需要导入default单元的 \Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband   项.
9.6.4 附到开始菜单栏:
快捷方式在 \Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\,
另外还需要导入default单元的 \Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage2   项.

9.7 绿化第三方程序到PE
可以用注册表工具分别扫描安装程序前后的注册表,提取需要写入的键值.将注册表导入PE,并复制安装形成的文件

☞大家注意到,用微软自带的winpeshl.exe载入explorer关机按钮无效.如果需要,可以使用pecmd, pecmd有自己的一套东西,操作起来会方便很多,大家可以根据需求与喜好用pecmd替换掉winpeshl,并写入pe注册表software单元中的CmdLine.

原文:http://bbs.wuyou.hk/forum.php?mod=viewthread&tid=273524&extra=page%3D5&page=1

你可能感兴趣的:(windows,Windows)