前文讨论了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.
WinPE文件对比程序(支持64位office).xla
不管是XP还是Win7(64),都会出现:
运行时错误 ‘1004’;
方法 ‘Cells’ 作用于对象 ‘_Global’ 时失败
下面有是 “结束”和”调试”,点”调试”后跳到:
Range (Cells(1, 2), Cells(30000, 100),ClearContents
你好,这是飞飞网友的作品,可以参考他的评论补充。https://www.wingwy.com/archives/2012_04_1018.html
翅膀啊,我按照你的方法做完了,为什么是黑屏啊。。。。只有一个鼠标而已。。。。回复我啊。。。是不是pecmd没加载配置文件啊。。。。
你好,这需要进一步调试以确定是文件缺失还是注册表配置问题。可以用下面的思路:先下载我的pe,用你的pe的注册表+我的pe文件,如果有问题那就是你注册表的问题;再用我的注册表+你的pe文件,看看你的pe文件是否有问题。
大大:
pe制作到6.1的时候。启动explorer各个组件启动还算正常。打算启用主题。结果发现pe系统是简易版本。
这是为什么???
winpe的原复制文件为 windows7 X86简体中文旗舰版啊
你好,最好用msdn版的win7镜像来做,注意我原文用的x64镜像没有starter版本,而x86的有,你看看install.wim中有几段镜像,选ultimate那段就行。
大大你好:
确认是msdn版的win7 。他所有的版本都是一个inatall.wim。没有分段。
外面是通过一个叫windows sim的软件来安装不同版本的。跟大大你说的“Windows系统映像管理器”一个样。实在是不懂这个怎么配置。
该怎么办?
解决了 。谢谢大大
不用客气,解决就好~
出先了这个问题:因配置标识不正确,系统无法开启服务进程,请检查用户名和密码
可能是注册表的C:没有完全替换为X:。
很好。
[…] […]
还有,为什么启动QQ安装程序是黑色窗口呢?
pe都是精简了组件的,不能当成完美的os来用,qq装不了很正常,如果非要用的话可以尝试分析qq需要的组件,自己添加进去才行。
这个已经解决了,少了某些32位的动态链接库
真强啊,qq密码输入搞定了?记得以前好像pe用qq是有问题,密码输入不上,不知道后来好了没,能说说少了什么dll之类的吗,3q~
我用的是绿色版的qq,在32位pe上正常使用,没加什么东西就行,64位可以成功安装,但是不能使用
能否说一下怎么配置声音支持啊,要加什么服务,文件或者注册表?不胜感激
你好,需要windows audio模块。还有,需要加载你主板的声卡驱动,这个每个机子可能都不一样,所以pe里面很少有人弄声音模块。
我添加这个服务显示“无法启动,服务不存在或已被标记为删除”是不是没有添加其他组件?
你看看windows aduio的依存关系,我也没搞过。最好对比windows的看看,这个应该是自启动,估计除了service还得在Setup\AllowStart 下加入
我根据依存关系加入了相关服务,allowstart中也加入了
好像网上的pe3.1版本大都支持声音,等我有时间下一个分析一下吧
winbuilder的脚本里面应该有,你可以参考。好运~
你好,你的文章写的很不错,非常的感谢,我照你的文章已经可以很快的制作成一个带命令窗口的PE出来了,可是还是在制作集成explorer的时候有遇到很困惑了,那就是修改注册表文件地方,你说把安装光盘中的software文件提取出来,这个没有问题,你有说到,先加载PE的software,并且导出成一个.reg的文件,接着再载入WIN7安装光盘中的SOFTWARE,并且进行一些修改后,导入之前的.reg文件,那这里是不是一直都在加载着WIN7的注册SOFTWARE的嘛,后面你就说关掉后就可以了,这里不是不是有些问题呢?
那里好像有点乱,很多人都在说这个问题。核心思想就是就是用win7的补充pe的,然后再用pe的覆盖回来,所以先要备份pe。你反过来也行,最后就是要用pe的初始设置覆盖掉你修改的单元
博主能否提供32位的纯净版win7PE下载?我自己动手改。。。
我以前3.0时候做过,你看看这个 https://www.wingwy.com/archives/2010_07_637.html
按照博主的步骤制作的PE蓝屏了。。。。
在滚动条滚动几下后,屏幕闪了两下就蓝屏了。。。。
估计是注册表配置问题,你可以把你的注册表和我的pe的互换,看看能不能启动,来分析是注册表还是文件问题。
博主的文章对于初学者来说就象是参禅。。。
至今仍有几点没弄明白;比如:7 通过winpe自带的几个小程序实现一些常用功能.
后面的就都没搞明白。。。
所有的步骤需全部参透方能一气合成。
额,这个对pe有一点了解的比较好,像pe自带的那几个工具什么的就很熟悉了。
请问:如果按照你的文件列表将文件全部复制到位后,从这一步起到“8.3 windows的一些设置”这些都不用操作了?
还有,绿色程序和第三方程序的快捷键如何才能放到桌面上?
谢谢!
不是的,这个文件列表只是参考。快捷方式可以用虚拟机在pe里面创件,然后保存那个链接(lnk文件),然后打开虚拟磁盘把快捷方式拷贝出来在打包wim文件即可。
[…] […]
非常感谢WING大大的帮助,本人也已经能进入桌面并在完善和添加程序和驱动中,真的很感谢WING大大,像大大这样无私奉献的人现在很少了,都把技术当成宝放那,少数人分享。
在此很感谢WING大大,我会继续完善的,希望大大以后能更多多交流。
不客气,成功就好,欢迎常来~~
一定一定
你好,我现在在做win8PE,添加桌面的时候,进入桌面之后只有一个最下边的栏,但是没有桌面上的图标,桌面是空的!而且也不能粘贴复制,求问能不能把你做的带桌面的pe的个人总结分享一下?在cmd的PE上添加桌面?或者告诉我您的QQ,私下跟你请教,谢谢啊
博主好,先谢谢你给这么好的教程,我才制作了一个PE ,基本和博主的PE差不多了。
不过还是有几个问题,来找博主再次指导下,
一: 桌面点右键选“分辩率设置”显示找不到文件[没说什么文件]
在控制面板点无反应。
二: 桌面点右键选“个性化”也显示朱不到文件[没说什么文件],但在控制面板可以打开。
三: 计算机右键点“属性”无反应,右下角网络图标右键打开“网络和共享中心”也没反应;
最后说一下博主教程有一点错误:在:6.2.3处
“找到你正在运行的win7注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer 下,导出 Advanced,Personalization和HideDesktopIcons备用”其中“Personalization和HideDesktopIcons”在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer 下。
你好,不用客气,你可以看看是否和我的pe文件一致,那样可以确认是注册表配置问题还是少文件的问题。 我也是学这做,没有全部记下来,不清楚的也是google的,你说的“网络和共享中心”我也不知道:(。另外,多谢你对我注册表的指正~
其中“个性化”和在控制面板可以打开面在桌面就打开,那么一定是注册表没配置好,没有关联到文件,我在在删除“小工具”注册表处注册表上面有“个性化”配置看了command,那个CLSID是和你的一样的,
software配置单元应该没问题,估计是default中的配置不全
请教一个问题,WinPE如何连接网络啊?
网络是pe自带的功能,和windows一样,不用特意去“连接”
请教一下 老师 :
如何在进入桌面后(不是在进入桌面前)自动运行一个批处理。。。。
谢谢老师!!!
你好,和windows一样,可以操作startup
请问我想删除win7pe自带的某个磁盘控制器驱动,这样可以在pe系统启动后不识别本地磁盘,达到能上网,又做到本地磁盘数据安全保密的效果,请问该如何操作啊,我自己试了很长时间,都没有成功,如果铲除驱动文件,提示找不到文件,直接删除注册表中的某些项,则系统蓝屏,请大侠指导一下子!我的QQ:13710579
开始不加载硬盘驱动,然后再system单元的\ControlSet001\Services删掉相应的项应该就行了,这个我也没搞过,你可以尝试一下~
怎么设置实现开始不加载硬盘驱动,pe会自动搜索的,加QQ指导一下吧,谢谢了
你好,你看看system下\ControlSet001\Services\Disk 以及 \ControlSet001\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318} ,删了行不行. 我qq不是很方便,这个问题我也没搞过,不能帮你了~~
\ControlSet001\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318} ,删了后就搞定了,非常感谢拉
一个新问题,删除上面的条目后,所有的磁盘,包括本地硬盘、U盘和移动硬盘也都不能显示了,他们的状态都变成了脱机,我想问问能不能做到只把本地硬盘给脱机,而不影响插入的U盘和移动硬盘,谢谢!
呵呵,你好,这个我真不知道了。class下面的{4D36E967-E325-11CE-BFC1-08002BE10318}项目就是我搜索disk发现的,要实现你要的功能,得好好分析system下面的加载项~
你好,最近看到个磁盘隐藏,应该能解决你的问题
加载修改default下\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
“NoDrives” =hex: ff,ff,ff,03
这篇文章 http://blog.cncll.com/article.asp?id=323 可能对你有帮助,也许grouporderlist也需要修改
唉,老大的文章反复看了几遍,仍然不知道,怎么把开始菜单中的那个多余无效的链接(Accessories)删掉,也许是我太笨了。。。。
e,我也没发现这个,不过文件应该在Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs下,注册表有在default单元的\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下
不好意思,注册表default中,没有\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer这一项。
Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs下有一个配置文件desktop.ini,配置文件的内容为:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21782
[LocalizedFileNames]
Internet Explorer.lnk=@%windir%\System32\ie4uinit.exe,-734
Internet Explorer (64-bit).lnk=@%windir%\System32\ie4uinit.exe,-735
再找不到其他有关(Accessories)的信息,我很菜的,不知再从那里找,不好意思给您添麻烦了,谢谢。。。。
把这个删了行不行?
删了也不行。。。。
控制项应该在注册表default的\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer中,没有可以自己件,但里面的项具体名字我不知道, 那个无效的ie是x86的,你改成Internet Explorer.lnk=@x:\Program Files\Internet Explorer\iexplore.exe 或者两个都写成Internet Explorer.lnk=@%windir%\System32\ie4uinit.exe,-735
就可以了.
唉,我太累了,我根本搞不定这个问题,不管怎么操作,就是删不掉这个多余无效的链接(Accessories)。。。。。
不知是哪个文件动态写入的,所以改注册表文件是没有用的。。。
[…] […]