|
声明:本教程是根据此贴的教程改编而成,上篇主要做了精简,下篇基本没动。若原作者wingwy觉得我侵犯了您的版权,请及时与我和版主联系,以删除此贴。
正文开始:
给winpe添加explorer教程(上):基础知识及explorer的初步加入
原作者: wingwy 发表于:2011年02月22日
编辑:TanGom
1 winpe和WAIK的一些基本知识
1.1 winpe全称Windows Preinstallation Environment,中文就是Windows预安装环境
1.2 WAIK全称Windows Automated Installation Kit,意为自动安装工具包.
我们做pe主要用到他的2个工具,imagex和dism. 要制作winpe3.1,目前需同时下载WAIK3.0(点此下载)和3.1的补充包(点此下载)
2 准备工作
我建议大家准备好两个waik的iso文件和win7sp1的中文版安装镜像.要中文版win7主要是为了让最后制作出来的带explorer的winpe完全中文化.
如果你没有win7sp1中文版安装iso,只要你的操作系统是win7sp1中文版就可以了(这可以通过安装中文sp1包升级)
其他软件主要是ultraliso和Registry Workshop.
3 winpe的基本制作
3.1 这里探讨我们第一个制作工具DISM。记得在“很久很久的从前”,我们制作winPE 2.0的时候是用ImageX来对我们的wim文件进行操作,但在新版本的waik里,我们有更强大更标准的DISM取代他,
3.2 准备我们的材料,打开我们的“部署工具命令提示”,记得得以以管理员身份运行,这个东西在“开始-程序-Microsoft Windows AIK”下,你见到是命令行的图标的就是了。
打开后我们输入命令“copype.cmd x86 c:\winpe_x86” (路径随意,以后以这个路径为例)
那copype.cmd就会把制作的winpe文件copy到c:\winpe_x86
3.3 使用命令:Dism /Mount-Wim /WimFile:C:\winpe_x86\winpe.wim /index:1 /MountDir:C:\winpe_x86\mount 装载镜像,成功可以后看到在C:\winpe_X86\mount多了些许文件夹。
3.4 如果你想DIY一下桌面,请自己制作一个墙纸,格式bmp,文件名为winpe.bmp,将其复制到C:\winpe_x86\mount\windows\system32里面,大功告成!
3.5 现在我们“编辑”完镜像,下面就要封装起来,我们使用命令“Dism /unmount-Wim /MountDir:C:\winpe_x86\mount /Commit”,你会发现mount文件夹又变回空空的。
3.6 首先执行“copy C:\winpe_x86\winpe.wim C:\winpe_x86\ISO\sources\boot.wim”把winpe.wim文件复制到sources文件夹下,并改名为boot.wim.
然后执行“oscdimg -n -bC:\winpe_x86\etfsboot.com C:\winpe_x86\iso C:\winpe.iso”,你就会在C盘根目录下见到winpe.iso。
一个基本的winpe就完成了.用虚拟机测试一下吧,启动后就是一个cmd窗口,如下图
这个pe是最基本的,显然不好用,我们需要继续修改boot.wim文件加入程序包
4 程序包的加入
4.1 加载waik_supplement_zh-cn.iso进入amd64文件夹,拷贝WINPE_FPS到c:\winpe(路径随意,以后以这个路径为例)
4.2 新建文件夹c:\winpe\mount 在开始菜单上打开Windows AIK中打开”部署工具命令提示”
4.3 重复3.2和3.3的操作,以展开镜像
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:C:\winpe_x86 /Add-Package /PackagePath:”c:\winpe\WINPE_FPS\winpe-wmi.cab”
添加其他程序包格式一样,只需修改cab文件路径,别忘了各个程序包还有相应的_ZH-CN.CAB包.
5 explorer初步加入winpe
5.1 好了,大家估计都急着让pe运行explorer了.我们把explorer加入到windows目录下,运行
Dism /unmount-Wim /MountDir:C:\winpe_x86\mount /Commit
重新打包boot.wim,并替换掉pe.iso中的boot.wim,保存后放入vm测试.在启动后还是一个cmd窗口.直接输入explorer.exe,系统提示缺少ExplorerFrame.dll.
显然,单独加入explorer.exe是不行的.简单的说windows系统程序的正常运行至少要满足两点,一个是相关的支持文件出现在正确的路径中(如各个dll文件和mui文件等),另外一个就是正确的注册表配置(程序运行的设置和支持文件的路径等).
好,明白了这个,一切就很清晰了,基本的explorer运行并不需要任何第三方程序的加入或是对微软的文件进行任何修改.只要添加了支持explorer运行的文件,配置好了注册表,就可以在winpe中正常运行explorer了.
5.2 其中文件的加入部分我这里不想细讲,因为它既繁琐又简单,意义不大.为什么呢?你运行程序,它提示你少什么文件,你加入就是了.如果你有耐心,可以一个一个加(当然,有时候他并不会提示你缺少某个文件,而explorer还是不能运行).文件的加入相对于注册表的是显而易见的,即使是才接触计算机的网友,只要他会复制和粘贴就没问题.另外,你还可以用鼠标右键看文件说明。
详细的文件列表可以参见 给winpe添加explorer教程(续):文件列表 http://www.wingwy.com/archives/2011_03_868.html
5.3 好了,该动pe的注册表了,注意C:\winpe_x86\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 用Dism打包,生成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的运行.
6 winpe运行explorer的初步完善.
6.1 win7主题的启用
6.1.1 找到正在运行的win7注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services下面,导出与win7相关的几项DXGKrnl, monitor,Schedule,Themes,UxSms和vga.加载你的挂载目录\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 加载挂载目录\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并启用主题,修改 挂载目录\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文件夹下相关文件)到 挂载目录\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配置单元 (挂载目录\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教程(续):文件列表 http://www.wingwy.com/archives/2011_03_868.html
结语:好了,我写的”给winpe添加explorer教程”到此结束.里面的东西都很基本,也肯定有很多不准确的地方,做出来的pe也是很粗燥.其实用winbuilder一类的工具完全可以轻易,快速的做出来.不过我这个和它不一样的就是,它是在pe的基础上增加,我是在win7的功能上减少. 众口难调,各有所爱,别人的pe再好,对于你不一定好,一个适合自己pe才是最好的.希望此文能对大家作pe有所帮助,愿大家都能做出自己满意的winpe.
[ 本帖最后由 2010ttt 于 2012-10-21 20:23 编辑 ] |
评分
-
查看全部评分
|