无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 37649|回复: 73
打印 上一主题 下一主题

给winpe添加explorer教程(上下)!

    [复制链接]
跳转到指定楼层
1#
发表于 2011-2-24 11:02:51 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
给winpe添加explorer教程(上):基础知识及explorer的初步加入
作者: wingwy 发表于:2011年02月22日

前言:虽然有winbuilder一类优秀的制作pe的工具,我还是打算写一个从WAIK入手,”手工”制作winpe并加入explorer的教程.此教程很基本,分为两个部分,前面部分提及winpe及waik的基础知识,以及用waik添加程序包,通过修改win7sp1安装文件中的注册表software配置单元实现explorer的初步加入;后面部分介绍explorer的完善和设置,windows功能的添加,以及对winpe精简和合盘等的一些讨论.我写的这些主要来自于自己做pe的一些积累,waik的帮助文件和winbuilder的脚本,另外一些关键的问题很多是在wuyou,boot-land等论坛得到解决的,pe文件的加入部分也参考了很多他人的pe,还有很多问题都是通过google搜索解决.希望大家在看完本文后也都能做出自己满意的pe.
下面以64位winpe3.1为例,介绍制作带explorer的win7pe的操作过程.最终得到一个功能较为全面的winpe,如我的pe3.1, wingwy-pe3.1-v2.iso
http://www.wingwy.com/archives/2011_02_851.html
注:此文很多是回忆内容,文中难免很多错误,欢迎大家指出并讨论.
1 winpe和WAIK的一些基本知识
1.1 winpe全称Windows Preinstallation Environment,中文就是Windows预安装环境.其他的不用啰嗦,但我觉得有必要先说一下他的版本和名称问题.
winpe 1.x系列对应windows xp和2003,可以叫xpe,需要注意的是Windows XP Embedded也简称xpe,不过在pe领域,xpe应该不具有误导性.相应的,winpe 2.x系列对应windows vista和2008, 也叫vistape.3.x系列是对应windows 7和2008R2,所以有时也叫win7pe.后面的小标号x则是对应各个sp版本,如某个pe是winpe2.2,即表示对应于vista sp2,目前最新的winpe3.1就是对应于win7 sp1.


1.2 WAIK全称Windows Automated Installation Kit,意为自动安装工具包.我们做pe主要用到他的2个工具,imagex和dism. 要制作winpe3.1,目前需同时下载WAIK3.0(KB3AIK_CN.iso 含制作工具,)和3.1的补充包(waik_supplement_zh-cn.iso 含新的wim文件). 注:以后微软可能会把这两个整合到一起.

另外,winpe2.0以后,程序系统和语言包都是分离的,WAIK的语言版本也就不是问题了,各个版本都含有对应的语言包,只需要自己添加就行了. 下面的例子是以中文版为例,其他语言版本也可.
2 准备工作
理想情况下,我建议大家准备好两个waik的iso文件和win7sp1的中文版安装镜像.要中文版win7主要是为了让最后制作出来的带explorer的winpe完全中文化.
如果你没有win7sp1中文版安装iso,只要你的操作系统是win7sp1中文版就可以了(这可以通过安装中文sp1包升级,我下面的例子就是这样的).如果这个条件还是不满足,下载我的pe, wingwy-pe3.1-v2.iso 里面的文件基本上就够了.
其他软件可以主要是ultraliso和Registry Workshop.
3 winpe的基本制作
WAIK其实提供了快速生成简单pe的脚本,不过为了使大家更好的了解pe,我们在这里手动完成.
3.1加载waik_supplement_zh-cn.iso进入amd64文件夹,拷贝boot文件夹bootmgr文件到 D:\TEMP\winpe3.1\org\win7pe (路径随意,以后以这个路径为例).
3.2拷贝amd64文件夹下winpe.wim到D:\TEMP\winpe3.1\org\win7pe\sources 并改名为boot.wim
3.3用ultraiso打开win7安装文件,提取iso引导信息文件备用,比如存为boot.bif.
新建一个启动光盘,引导文件用刚才的boot.bif文件,把D:\TEMP\winpe3.1\org\win7pe\下所有文件加入这个启动光盘,保存称pe.iso.一个基本的winpe就完成了.用虚拟机测试一下吧,启动后就是一个cmd窗口,如下图

这个pe是最基本的,显然不好用,我们需要修改boot.wim文件加入程序包
4 程序包的加入
4.1 加载waik_supplement_zh-cn.iso进入amd64文件夹,拷贝WINPE_FPS到D:\TEMP\winpe3.1\org\win7pe (路径随意,以后以这个路径为例)
4.2 新建文件夹D:\TEMP\winpe3.1\org\mount 在开始菜单上打开Windows AIK中打开”部署工具命令提示”如下

4.3 展开imagex以供修改,运行如下代码:
imagex /apply D:\TEMP\winpe3.1\org\win7pe\sources\boot.wim 1 D:\TEMP\winpe3.1\org\mount
4.4 添加程序包
AIK的说明文件里面有详细介绍,推荐添加以下6个包
WinPE-HTA:HTML 应用程序支持。
WinPE-MDAC:Microsoft(R) 数据访问组件支持。
WinPE-Scripting:Windows 脚本主机 (WSH) 支持。
WinPE-WMI:Windows Management Instrumentation (WMI) 支持。

WinPE-PPPoE:启用以太网上的点对点协议 (PPPoE) 支持。(如ADSL)
WinPE-DOT3SVC:IEEE 802.X 身份验证协议支持。(如WiFi)

命令格式如下:
dism /image:D:\TEMP\winpe3.1\org\mount /Add-Package /PackagePath:”D:\TEMP\winpe3.1\org\WINPE_FPS\winpe-wmi.cab”
添加其他程序包格式一样,只需修改cab文件路径,别忘了各个程序包还有相应的_ZH-CN.CAB包.
注:如果是英文版的WAIK,还需要先添加WINPE-FONTSUPPORT-ZH-CN和LP_ZH-CN包,然后设置:
dism /image:D:\TEMP\winpe3.1\org\mount /set-uilang:zh-cn
dism /image:D:\TEMP\winpe3.1\org\mount /set-syslocale:zh-cn
dism /image:D:\TEMP\winpe3.1\org\mount /set-userlocale:zh-cn
dism /image:D:\TEMP\winpe3.1\org\mount /set-inputlocale:0804:00000804
dism /image:D:\TEMP\winpe3.1\org\mount /set-timezone:”China Standard Time”
dism /image:D:\TEMP\winpe3.1\org\mount /set-SKUIntlDefaults:zh-cn

最后删除英文包:
dism /image:D:\TEMP\winpe3.1\org\mount /Remove-Package /PackageName:Microsoft-Windows-WinPE-LanguagePack-Package~31bf3856ad364e35~amd64~en-US~6.1.7601.17514
5 explorer初步加入winpe
5.1 好了,大家估计都急着让pe运行explorer了.我们把explorer加入到windows目录下,运行
imagex /capture /compress fast /boot D:\TEMP\winpe3.1\org\mount D:\TEMP\winpe3.1\org\win7pe\sources\boot.wim “winpe” “winpe”
重新打包boot.wim,并替换掉pe.iso中的boot.wim,保存后放入vm测试.在启动后还是一个cmd窗口.直接输入explorer.exe,你看到了什么? 系统提示缺少ExplorerFrame.dll.
显然,单独加入explorer.exe是不行的.简单的说windows系统程序的正常运行至少要满足两点,一个是相关的支持文件出现在正确的路径中(如各个dll文件和mui文件等),另外一个就是正确的注册表配置(程序运行的设置和支持文件的路径等).
好,明白了这个,一切就很清晰了,基本的explorer运行并不需要任何第三方程序的加入或是对微软的文件进行任何修改.只要添加了支持explorer运行的文件,配置好了注册表,就可以在winpe中正常运行explorer了.
5.2 其中文件的加入部分我这里不想细讲,因为它既繁琐又简单,意义不大.为什么呢?你运行程序,它提示你少什么文件,你加入就是了.如果你有耐心,可以一个一个加(当然,有时候他并不会提示你缺少某个文件,而explorer还是不能运行).文件的加入相对于注册表的是显而易见的,即使是才接触计算机的网友,只要他会复制和粘贴就没问题.另外,你还可以用鼠标右键看文件说明,
其实pe的制作就是不断地积累,吸收前人的经验,我更喜欢先对比别人的pe,看看别人都加了些什么文件,换一个思路,先添加足够的文件,运行起了explorer后再删除. 因此我建议你直接把我的wingwy-pe3.1-v2.iso中winpe.wim文件展开. 同时展开win7sp1的install.wim文件,依照我我的pe文件列表复制win7的安装文件到你要做的pe目录,D:\TEMP\winpe3.1\org\mount 下.(实现此步有很多办法,比如用xcpoy带/s /h /d /y 参数). 实在不行就直接复制我pe展开的文件,注意不要替换文件.
5.3 好了,该动pe的注册表了,注意D:\TEMP\winpe3.1\org\mount\Windows\System32\config 下的三个文件 software, system 和 default . 用注册表编辑器加载software单元,命名为pe-soft全部导出为soft-init.reg后,卸载pe-soft配置单元.
5.3.1 打开win7sp1的install.wim文件(可以用7-zip,用imagex展开也可),定位到Windows\System32\config下,把software文件加载到注册表,同命名为pe-soft. 一会儿你会遇到权限问题,可先在”权限”-”高级”中替换”所有者”为你当前用户.再在”权限”中添加好权限.
5.3.2 在pe-soft下搜索Interactive User,找到后全部删除.
5.3.3 在pe-soft下搜索D:\ 全部替换为X:\
5.3.4 导入刚才的soft-init.reg替换掉win7安装文件的,卸载pe-soft
5.4 用imagex打包,生成iso后启动vm测试.还是命令提示符窗口,不过你现在运行explorer.exe.看看,熟悉的explorer是不是已经出来.

好了explorer已经成功运行了,不过显然达不到我们要的效果,比如就没有任务栏,没有桌面,下面就继续修改注册表.
5.5 把任务栏和桌面显示出来
5.5.1 加载pe的software文件到注册表,命名为pe-soft,找到pe-soft下\Microsoft\Windows NT\CurrentVersion\Winlogon下,把”Shell”=”cmd.exe /k start cmd.exe” 改成 “Shell”=”explorer.exe”
5.5.2 找到你正在运行的win7的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost,导出全部项并添加到pe-soft下的Microsoft\Windows NT\CurrentVersion\Svchost.(此步骤在这里似乎不是必须的,不过为了其他功能的正常运行,建议添加)
5.5.3 合并打包测试,再运行explorer,任务栏和桌面都出来了(注: 可能有网友会质疑我的wingwy-pe3.1-v2.iso里含有第三方文件,不过你可以把它们全部删除后打包测试,不影响运行explorer,调出任务栏和桌面).

至此,我们在不修改原版文件,不添加第三方文件的基础上初步实现了explorer的运行.不过大家也看到,这样一个pe显然是不能让人满意的,更多的后续设置以及windows功能的添加和讨论,请关注 “给winpe添加explorer教程(下):explorer的完善设置与其他讨论 ” http://www.wingwy.com/archives/2011_02_862.html  .

[ 本帖最后由 dgxhls 于 2011-2-24 12:22 编辑 ]

点评

感谢分享  发表于 2014-8-12 23:57

评分

参与人数 4无忧币 +216 收起 理由
Win7MEMZ-BX + 1 淡定
信长野望 + 5 好厉害
achst + 10 我很喜欢
2010ttt + 200 我很赞同

查看全部评分

2#
 楼主| 发表于 2011-2-24 11:03:39 | 显示全部楼层

给winpe添加explorer教程(下):explorer的完善设置与其他讨论

给winpe添加explorer教程(下):explorer的完善设置与其他讨论
作者: wingwy 发表于:2011年02月23日

前文讨论了explorer初步加入winpe的过程 http://www.wingwy.com/archives/2011_02_857.html,这样的pe显然需要进一步改进.
6 winpe运行explorer的初步完善.
6.1 win7主题的启用
6.1.1 找到正在运行的win7注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services下面,导出与win7相关的几项DXGKrnl, monitor,Schedule,Themes,UxSms和vga.加载D:\TEMP\winpe3.1\org\mount\Windows\System32\config下system文件到注册表,并命名为pe-sys.把刚才导出的win7的那6项服务导入到pe-sys下\ControlSet001\services中.
6.1.2 在pe-sys的\Setup\AllowStart\中添加项Themes.


6.1.3 这是唯一需要文件修改与添加的地方. 参见 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=167092 用hex编辑器打开winlogo.exe,查找4D0069006E0069004E005400 最后两位改为01即可. 下载ux.exe,在运行explorer前运行此小程序即可.
6.2 桌面背景的应用
6.2.1 找到注册表HKEY_LOCAL_MACHINE\System\ControlSet001\Control\ProductOptions,导出,并导入到pe-sys的ControlSet001\Control\ProductOptions下.
6.2.2 在pe-sys下\ControlSet001\Control\Lsa添加“LmCompatibilityLevel”=dword:00000002
6.2.3 找到你正在运行的win7注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer 下,导出 Advanced,Personalization和HideDesktopIcons备用;导出HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM 备用.
6.2.4 加载D:\TEMP\winpe3.1\org\mount\Windows\System32\config下default文件到注册表,并命名为pe-def.把6.2.3步骤中的4项修改路径后导入pe-def.
好了,现在winpe已经能很好地运行explorer了.
7 通过winpe自带的几个小程序实现一些常用功能.
7.1 驱动的加载程序—Drvload.exe
经常有人问该怎么加入驱动,准备好你的驱动文件,看了下面图片你就清楚了,格式就是drvload (inf文件路径)

7.2 winpe的初始化设置—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.3 winpe工具—Wpeutil.exe
这个工具非常实用,大家可以参看WAIK的帮助文件.如果不用第三方程序,pe的关机和重启就是通过它实现的.下面列了几个有用的
wpeutil shutdown 关机 wpeutil reboot 重启
wpeutil CreatePageFile /path=C:\pagefile.sys。设置虚拟内存
wpeutil DisableFirewall 开关防火墙 (Enablefirewall)

7.4 explorer的自动载入—Winpeshl.exe
比如,我们可以让winpe自动载入explorer并启用主题,修改D:\TEMP\winpe3.1\org\mount\Windows\System32\winpeshl.ini 中内容为:
[LaunchApps]
wpeinit.exe /unattend=X:\Users\Default\Documents\init.xml
ux.exe
X:\windows\explorer.exe

没有应答文件直接运行wpeinit.exe.当然,还可以加载更多的程序,一行一行的添加就行了.
8 使用windows的其他功能和设置
8.1 windows程序的添加
由于我们直接使用了修改的win7的software注册单元,其他功能的添加就很简单了.基本不用改注册表,直接复制文件就是了.
8.1.1 比如要加入ie8,就复制Program Files\Internet Explorer下所有文件(以及system32文件夹下相关文件)到D:\TEMP\winpe3.1\org\mount\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配置单元(:\TEMP\winpe3.1\org\mount\Windows\System32\config下system文件)到注册表并命名为pe-sys,导入刚才导出的msiserver即可.
8.3 windows的一些设置
winpe的default单元主要对应windows的HKEY_CURRENT_USER,software单元对应HKEY_LOCAL_MACHINE\SOFTWARE,system单元对应HKEY_LOCAL_MACHINE\SYSTEM
所以你要设置计算机名,桌面图片,oem信息和图片,隐藏夹显示与否,开始菜单,任务栏,桌面什么的全在这里,位置和项目与windows的类似,网上很多了,就不说了.

8.4 微软拼音的添加: 文件很大,不推荐,我就不写了,真的想要可以看waik的帮助文件,很简单,批处理都给你写好了.
9 一些需要注意的一些地方和其他程序的加入
9.1 计算机管理管理不能在”我的电脑”上用右键打开,加载pe注册表software单元,修改Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage\command,为 X:\System32\mmc.exe /b
9.2 “关机”按钮无效,可以改software单元的Microsoft\Windows\CurrentVersion\Policies\Explorer 添加 “NoClose”=dword:00000001 或0 移出或显示”关机”按钮
9.3 如果你不添加,桌面右键菜单”小工具”很难看,可以去掉,同样,删除 \Classes\Directory\Background\shellex\ContextMenuHandlers\Gadgets 和 Classes\DesktopBackground\Shell\Gadgets 即可
9.4 用户文件夹的更改,默认在config文件夹下,建议改到X:\Users\Default下,可在Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18 下修改.
9.5 MSDaRT工具的加入,可以用7zip打开MSDaRT65_x64.msi文件,提取其中的tools.cab和Sweeper.cab中mount文件夹合并到pe即可(32位类似).
9.6 其他绿色程序的加入与快捷方式等
如果文件不大,可以直接放到program files 目录下并和wim文件一起打包.你也可以单列出来放到光盘上,或是打包成新的wim文件,进入pe后再挂载.桌面快捷方式在\Users\Default\Desktop .锁定到任务栏快捷方式在\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar, 另外还需要导入default单元的 \Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband 项.

9.7 整合第三方程序
同理,我在8.3中已讲了注册表的对应,照着添加就是了.可以用注册表工具分别扫描安装程序前后的注册表,提取需要写入的键值(相对于文件加入操作,这种注册表操作麻烦多了).

10 有关winpe的一些讨论
10.1 winpe的和盘与启动
这个已经讨论很多了,分离式和盘就不说了
http://www.wingwy.com/?tag=%e5%a4%9a%e5%90%88%e4%b8%80%e5%ae%89%e8%a3%85%e7%9b%98 ,网上的和盘模板也很多.其实我们可以整合到安装盘的source\boot.wim文件中,此文件分两段,一段pe,一段setup(注意一个wim文件只能有一个/boot的单元启动).整合后可以更省空间.另外,32位和64位win7可以放到一起,还可以加入2008,xp等,具体可以参考我在vista早期的文章,http://www.wingwy.com/archives/2008_07_139.html .原理类似, 直接操作install.wim文件就可以了,这个方法理论上可以安装32位和64位的xp,vista,win7和2008(R2).
10.2 关于winpe其他文件和驱动的加入以及精简
大家注意到,用微软自带的winpeshl.exe载入explorer关机按钮无效.如果需要,可以使用pecmd,相关讨论参见 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=144701 pecmd有自己的一套东西,超作起来会方便一些,大家可以根据需求与喜好用pecmd替换掉winpeshl,并写入pe注册表software单元中的CmdLine.
驱动可以加入windows/inf下面,也可以外置,你要什么就加什么,对于不需要某些驱动的人,多的驱动反而要精简掉.所以我觉得驱动这个东西还是自己加比较好.
winpe的精简我曾粗略的讨论了一下 http://www.wingwy.com/archives/2010_08_697.html文件大小与功能总是矛盾的.比如字体文件,原版的中文winpe3.1字体文件很大,其中mingliu.ttc有31M,网上也有号称完美精简的字体,用了后文件是小了,但有些程序总是乱码,或是对不齐.其实这个”完美精简”只是在特定的条件下,用(或不用)特定的程序才能实现.你可以反过来想一想,如果真的能”完美”,微软何必要把它做到31M再留给你精简?(还有shell32.dll等也类似) 再如,msyh.ttf也有21M,砍掉后就没启动动画了.当然其他一些字体或是文件确实用不上(如其他语言的nls,mui文件),或者你用的那些程序都用不上这些东西,完全可以删除.
结语:好了,我写的”给winpe添加explorer教程”到此结束.里面的东西都很基本,也肯定有很多不准确的地方,做出来的pe也是很粗燥.其实用winbuilder一类的工具完全可以轻易,快速的做出来.不过我这个和它不一样的就是,它是在pe的基础上增加,我是在win7的功能上减少. 众口难调,各有所爱,别人的pe再好,对于你不一定好,一个适合自己pe才是最好的.希望此文能对大家作pe有所帮助,愿大家都能做出自己满意的winpe.

评分

参与人数 3无忧币 +211 收起 理由
Win7MEMZ-BX + 1 淡定
achst + 10 接力下去
2010ttt + 200 精品文章

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-19 13:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表