前文讨论了explorer初步加入winpe的过程 https://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.com/viewthread.php?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的和盘与启动
这个已经讨论很多了,分离式和盘就不说了 https://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早期的文章,https://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.com/viewthread.php?tid=144701 pecmd有自己的一套东西,超作起来会方便一些,大家可以根据需求与喜好用pecmd替换掉winpeshl,并写入pe注册表software单元中的CmdLine.
驱动可以加入windows/inf下面,也可以外置,你要什么就加什么,对于不需要某些驱动的人,多的驱动反而要精简掉.所以我觉得驱动这个东西还是自己加比较好.
winpe的精简我曾粗略的讨论了一下 https://www.wingwy.com/archives/2010_08_697.html文件大小与功能总是矛盾的.比如字体文件,原版的中文winpe3.1字体文件很大,其中mingliu.ttc有31M,网上也有号称完美精简的字体,用了后文件是小了,但有些程序总是乱码,或是对不齐.其实这个”完美精简”只是在特定的条件下,用(或不用)特定的程序才能实现.你可以反过来想一想,如果真的能”完美”,微软何必要把它做到31M再留给你精简?(还有shell32.dll等也类似) 再如,msyh.ttf也有21M,砍掉后就没启动动画了.当然其他一些字体或是文件确实用不上(如其他语言的nls,mui文件),或者你用的那些程序都用不上这些东西,完全可以删除.
另外,后补充 给winpe添加explorer教程(续):文件列表 https://www.wingwy.com/archives/2011_03_868.html
结语:好了,我写的”给winpe添加explorer教程”到此结束.里面的东西都很基本,也肯定有很多不准确的地方,做出来的pe也是很粗燥.其实用winbuilder一类的工具完全可以轻易,快速的做出来.不过我这个和它不一样的就是,它是在pe的基础上增加,我是在win7的功能上减少. 众口难调,各有所爱,别人的pe再好,对于你不一定好,一个适合自己pe才是最好的.希望此文能对大家作pe有所帮助,愿大家都能做出自己满意的winpe.
亲测Win7PE只需要添加Themes服务和一些文件
\Windows\System32\Theme*.dll
\Windows\Resources\Themes\Aero
再在PE运行ux.exe就可以使用basic主题了,其他服务都不需要添加
作者你好,请问Win7PE的硬件弹出该如何搞?谢谢!
你好,我不记得这个选项了。
那我参照10的方法搞吧
作者您好,我按照您的教程也成功制作了一个PE,32位的,但是在做主题那一步之后发现在explorer之前运行ux.exe主题没有任何反应,仍然是classic主题,请问该怎么办?
你好,这个ux.exe是需要修改的,可以以参考这里
https://www.wingwy.com/archives/2011_02_862.html/comment-page-2#comment-24871
我已经修改了还是没有效果,我计划拿我之前存档的文件再重新添加一遍主题
我添加的svchost服务后成功了,谢谢作者,还要请问一下,PE每次打开文件夹都要在任务栏上新建一个任务窗口,请问该怎么样变成只在一个任务窗口中打开文件夹还有怎么样添加搜索?谢谢
新建一个任务窗口这个改项注册表就行,搜索好像比较麻烦,要加些文件
大佬,【一个可启动Aero的Win7 32位PE】 https://www.bilibili.com/video/BV1mv411y7jX/?share_source=copy_web&vd_source=6a381a81f21de6992970c63ff52d238f,请问这个32位pe如何做到system用户下能在virtualbox虚拟机下启动aero呢
你好,win7的Aero好像破解过,太早了抱歉我记不清了。早期的wuyou论坛有很多技术资料,你可以去那边看看。
翻了下系统文件,是一个叫drawwin.exe的文件驱动的
您好,为什么我的pe系统添加了systemcpl.dll以及systemcpl.dll.mui还有sysdm.cpl,桌面”计算机”右键”属性”还是没反应呢
你好,还需要补充相应的注册表项目,单独的dll文件是不行的。
你好!为什么我的PE只能用经典主题。。。
你好,win7pe?
要修改文件的,文中有说明
这是唯一需要文件修改与添加的地方. 参见 http://bbs.wuyou.com/viewthread.php?tid=167092 用hex编辑器打开winlogo.exe,查找4D0069006E0069004E005400 最后两位改为01即可. 下载ux.exe,在运行explorer前运行此小程序即可.
改过了啊,ux也在explorer之前运行了啊
主题服务加了吗?如果全部按照文章来做应该没问题的。
发现是svchost里面的注册表中的主题服务没加,已解决,谢谢啦。
还有壁纸只能使用纯色是什么鬼
这个好像是改explorer的policy,你搜搜,具体我记不得了。
还有,为什么我的PE一起动explorer就提示
启动iedkcs32.dll时出现问题:找不到指定的模块
。。。。。。
这种情况多半是注册表没有改好
那要改哪个注册表呢
你好,感觉software项目的问题。
svchost也需要导出导入吗?
svchost怎么弄,我现在和你是一样情况,6项服务都已经添加ux程序已经运行成功但是就是还是经典主题
请问,svchost主题服务怎么加
64位PE的32位程序支持怎么解决,文件复制了后,虽然运行32位程序不再是子系统不存在,现在是变成应用程序并行配置不正确,不知怎么弄,百度无解,都是说运行库的问题,但根本就没有关系,自带的32位程序运行都会这样,
我昨天突然发现您的PE里没有PECMD,是完全靠startnet.cmd完成初始化的么,,,我看其他人做的那些PE没了PECMD就基本挂了。。
还有个问题就是为什么要删除“Interactive User”,它有什么作用?,如果不删会怎样?
你好,32位的问题直接用windows的注册表改过来就可以。我用的微软官方的winpeshl,没有用pecmd,这个倒是没问题。Interactive User win7前要删,现在是习惯,一起就做了,你可以试试看还需要删除不。
具体怎么改呢?还是不明白啊。。。
Interactive User已经删了,不过没删时问题好像是要多一些。。有些程序无法启动,不知道是不是这个的原因。。
基本的注册表修改按https://www.wingwy.com/archives/2011_02_857.html 这个就行。
不行啊,我都是这样处理的,把PE的注册表导出,然后导入到完整系统的配置单元里,重做了很多个,问题一直都有。
Interactive User在win8里删了之后不能切换用户,恢复回去就好了。。。
单就32位程序的支持来说,就是这样做的,你可以参考下winbuilder的脚本,看看是不是其他原因造成的?
你好,如何在win7PEx86中添加搜狗输入法或者其他输入法?急求
你好,我记得很早以前有位网友绿化过google输入法,其他的我也没搞过。
如果安装输入法有问题,就尝试绿化它。
您好,能否给一个链接介绍如何添加或者绿化输入法?实在是不会,谢谢啦
您好,能否给一个链接介绍如何添加或者绿化输入法?谢谢啦
你好,绿化输入法和绿化一般的软件是差不多的。需要注册表快照工具和文件比较工具。基本点有两个:
(1)注册表快照抓取安装程序写入注册表的键值,提取为单独文件合并到pe注册表(或者进pe是写入)
(2)文件比较工具抓取安装程序写入硬盘的文件,提取后放入pe中。
win8PE中如何添加驱动?希望您能详细说一下。您给的那张图片没看懂啊。谢啦
你好,简单说的话,比如你的网卡驱动是放在x:\net.inf,就可以在pe下运行
drvload x:\net.inf
像这种简单的驱动加载用drvload就行了。
但有些驱动需要进入pe前加载的,就得用dism /add-drviver 比如你的驱动文件C:\driver.inf 展开的wim镜像位于C:\test\offline 命令是类似的,
Dism /Image:C:\test\offline /Add-Driver /Driver:C:\driver.inf
这就是脱机加入驱动,最后打包wim文件即可。
可以参考 https://technet.microsoft.com/zh-cn/library/hh825070.aspx
你好,如何让制作的PE读不到本地硬盘,但是能读到U盘,需要删除哪些驱动或者添加哪些驱动?
删去硬盘驱动(比如关键字带ahci,sata,ide什么的,得具体google,我也不清楚),留下usb驱动就行。
下载ux.exe,在运行explorer前运行此小程序即可,这句话说的ux是在PE中运行吗?如何让它在explorer之前运行?
可以参考7.4部分,写在explorer前面就行了
[LaunchApps]
ux.exe
X:\windows\explorer.exe
这个软件需要放置在哪个文件夹下边?
放在system32下就行了,放在其他地方也可以,加上路径就行。
你好,我想问问如何一步一步从零开始制作win8PE,能加入桌面的,驱动程序,绿色软件的,我找了一下你之前的介绍,貌似没哟制作win8PE的教程,希望您给我一份,急需!谢谢啦
你好,win7和win8类似,加入桌面的,驱动程序,绿色软件都差不多。基本原理和我写的win7pe的是一样的,如果你是新手可以选取winbuilder一类的软件辅助,想要搞清楚具体细节可以看他的脚本。但win8.1有个问题就是任务栏没法在pe下正常工作,所以一般用ramos模式,就是登录用户从system变成admin了。
你好,请教一下做好后,点关机或重启键没有反应是怎么解决的。我在software的注册表\Software\Microsoft\Windows\CurrentVersion\Policies\下面添加Explorer的项目,以及NoClose”=dword:00000000 ,还是没有反应,不能关机和重启
你好,这是微软的限制,pe模式无法使用关机按钮。可以用pecmd(本文10.2部分),或者用wpeutil shutdown。
我的PE终于做的比较满意了,但是还有不少问题,希望大神能够帮忙解决:
1.Explorer和开始菜单搜索没反应;
2.无法打开桌面右键的“屏幕分辨率”和“个性化”,提示应用程序无法启动,因为应用程序的并行配置不正确(我把FBWF改成100(对应256)之后提示“没有足够的可用内存来运行此程序,请退出部分程序”?我虚拟机分了1G内存,boot.wim大小409M);
3.那些.cpl和.mmc文件在哪里?(好像在WinSxs下面?);
4.“计算机”属性点了没有反应。
你好,恭喜你做完了pe。
1 搜索文件的需要的文件
chsbrkr.dll
dsquery.dll
NOISE.CHS
query.dll
searchfolder.dll
structuredquery.dll
tquery.dll
还有导入这个注册表信息
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\Control\ContentIndex\Language\Chinese_Simplified]
“Locale”=dword:00000804
“NoiseFile”=”noise.chs”
“WBreakerClass”=”{12CE94A0-DEFB-11D2-B31D-00600893A857}”
“StemmerClass”=”{78fe669a-186e-4108-96e9-77b586c1332f}”
2 “屏幕分辨率”和“个性化”应该是你的注册表配置不全。FBWF确实不够,pe似乎要占用wim文件的2倍内存。你可以增加虚拟机内存。
3 文件都在system32下。
4 这也是注册表,抱歉我没法一一对应起来了。
好的,现在我的PE的WOW64还是有问题,运行32Bit程序,有的没反应(如Win$Man),有的出现“应用程序0xc0150004错误,请单击确定关闭应用程序”(如NT6硬盘安装器),估计是注册表问题(我用了知彼而知己的文章http://hi.baidu.com/zbezj/item/49d491d99b4bb3fc92a97453 里面的注册表文件和复制文件脚本,也把您的“给winpe添加explorer教程(续):文件列表”文章里面所需文件做成脚本,所以应该是不会缺少文件了)。请问应该怎样解决呢?
另外一个比较麻烦的问题:我把.NET.Framework和VC运行库做成7zip压缩包,希望在进入PE之后在桌面上放一个bat来加载它们,因为这些东西太大,希望封装到另外的wim另外,这个具体怎么实现呢?
可能是注册表不全。另外加载wim比较方便,你把这个wim和pe的wim文件放到一起,你只需要能识别启动pe的盘的盘符,然后就能找到这个wim文件,用imagex展开到硬盘就可以了。
那么用PECMD的MOUN命令可以吗?关键是光盘盘符是不确定的,这是个麻烦事
我不常用pecmd,所以不清楚他的功能。批处理找光盘盘符是可以的,你可以在光盘里面放一个空文件,取一个不常用的文件名,比如myisofile。然后在bat文件中写for循环找这个文件,盘符从CDE一直到Z,只要找到myisofile这个文件就跳出,这时的盘符就是光盘的盘符。
顺便问问,怎么修改PE启动画面?如替换成Win7的“正在启动Windows”
win7那个比较麻烦,好像是bmp图像放到wim中,最后在bootres中,而且还有数字签名。你是说win8的改win7的?我不清楚,可以google一下。