前文讨论了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.

标签: ,

118 条评论 发表在“给winpe添加explorer教程(下):explorer的完善设置与其他讨论”上

  1. guyu说道:

    作者您好,我按照您的教程也成功制作了一个PE,32位的,但是在做主题那一步之后发现在explorer之前运行ux.exe主题没有任何反应,仍然是classic主题,请问该怎么办?

  2. winpe爱好者说道:

    您好,为什么我的pe系统添加了systemcpl.dll以及systemcpl.dll.mui还有sysdm.cpl,桌面”计算机”右键”属性”还是没反应呢

  3. 老w68说道:

    你好!为什么我的PE只能用经典主题。。。

  4. Windows8.1说道:

    64位PE的32位程序支持怎么解决,文件复制了后,虽然运行32位程序不再是子系统不存在,现在是变成应用程序并行配置不正确,不知怎么弄,百度无解,都是说运行库的问题,但根本就没有关系,自带的32位程序运行都会这样,
    我昨天突然发现您的PE里没有PECMD,是完全靠startnet.cmd完成初始化的么,,,我看其他人做的那些PE没了PECMD就基本挂了。。
    还有个问题就是为什么要删除“Interactive User”,它有什么作用?,如果不删会怎样?

    • wingwy说道:

      你好,32位的问题直接用windows的注册表改过来就可以。我用的微软官方的winpeshl,没有用pecmd,这个倒是没问题。Interactive User win7前要删,现在是习惯,一起就做了,你可以试试看还需要删除不。

      • Windows8.1说道:

        具体怎么改呢?还是不明白啊。。。
        Interactive User已经删了,不过没删时问题好像是要多一些。。有些程序无法启动,不知道是不是这个的原因。。

        • wingwy说道:

          基本的注册表修改按https://www.wingwy.com/archives/2011_02_857.html 这个就行。

          • Windows8.1说道:

            不行啊,我都是这样处理的,把PE的注册表导出,然后导入到完整系统的配置单元里,重做了很多个,问题一直都有。
            Interactive User在win8里删了之后不能切换用户,恢复回去就好了。。。

            • wingwy说道:

              单就32位程序的支持来说,就是这样做的,你可以参考下winbuilder的脚本,看看是不是其他原因造成的?

  5. 如何添加输入法说道:

    你好,如何在win7PEx86中添加搜狗输入法或者其他输入法?急求

    • wingwy说道:

      你好,我记得很早以前有位网友绿化过google输入法,其他的我也没搞过。
      如果安装输入法有问题,就尝试绿化它。

      • 您好,能否给一个链接介绍如何添加或者绿化输入法?实在是不会,谢谢啦说道:

        您好,能否给一个链接介绍如何添加或者绿化输入法?实在是不会,谢谢啦

      • 您好,能否给一个链接介绍如何添加或者绿化输入法?谢谢啦说道:

        您好,能否给一个链接介绍如何添加或者绿化输入法?谢谢啦

        • wingwy说道:

          你好,绿化输入法和绿化一般的软件是差不多的。需要注册表快照工具和文件比较工具。基本点有两个:
          (1)注册表快照抓取安装程序写入注册表的键值,提取为单独文件合并到pe注册表(或者进pe是写入)
          (2)文件比较工具抓取安装程序写入硬盘的文件,提取后放入pe中。

  6. win8PE中如何添加驱动?说道:

    win8PE中如何添加驱动?希望您能详细说一下。您给的那张图片没看懂啊。谢啦

    • wingwy说道:

      你好,简单说的话,比如你的网卡驱动是放在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

  7. 你好,如何让制作的PE读不到本地硬盘,但是能读到U盘,需要删除哪些驱动或者添加哪些驱动?说道:

    你好,如何让制作的PE读不到本地硬盘,但是能读到U盘,需要删除哪些驱动或者添加哪些驱动?

    • wingwy说道:

      删去硬盘驱动(比如关键字带ahci,sata,ide什么的,得具体google,我也不清楚),留下usb驱动就行。

  8. 下载ux.exe,在运行explorer前运行此小程序即可说道:

    下载ux.exe,在运行explorer前运行此小程序即可,这句话说的ux是在PE中运行吗?如何让它在explorer之前运行?

    • wingwy说道:

      可以参考7.4部分,写在explorer前面就行了
      [LaunchApps]

      ux.exe
      X:\windows\explorer.exe

      • ux这个软件需要放置在哪个文件夹下边?说道:

        这个软件需要放置在哪个文件夹下边?

  9. 天堂说道:

    你好,我想问问如何一步一步从零开始制作win8PE,能加入桌面的,驱动程序,绿色软件的,我找了一下你之前的介绍,貌似没哟制作win8PE的教程,希望您给我一份,急需!谢谢啦

    • wingwy说道:

      你好,win7和win8类似,加入桌面的,驱动程序,绿色软件都差不多。基本原理和我写的win7pe的是一样的,如果你是新手可以选取winbuilder一类的软件辅助,想要搞清楚具体细节可以看他的脚本。但win8.1有个问题就是任务栏没法在pe下正常工作,所以一般用ramos模式,就是登录用户从system变成admin了。

  10. hello说道:

    你好,请教一下做好后,点关机或重启键没有反应是怎么解决的。我在software的注册表\Software\Microsoft\Windows\CurrentVersion\Policies\下面添加Explorer的项目,以及NoClose”=dword:00000000 ,还是没有反应,不能关机和重启

    • wingwy说道:

      你好,这是微软的限制,pe模式无法使用关机按钮。可以用pecmd(本文10.2部分),或者用wpeutil shutdown。

  11. precomx说道:

    我的PE终于做的比较满意了,但是还有不少问题,希望大神能够帮忙解决:
    1.Explorer和开始菜单搜索没反应;
    2.无法打开桌面右键的“屏幕分辨率”和“个性化”,提示应用程序无法启动,因为应用程序的并行配置不正确(我把FBWF改成100(对应256)之后提示“没有足够的可用内存来运行此程序,请退出部分程序”?我虚拟机分了1G内存,boot.wim大小409M);
    3.那些.cpl和.mmc文件在哪里?(好像在WinSxs下面?);
    4.“计算机”属性点了没有反应。

    • wingwy说道:

      你好,恭喜你做完了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 这也是注册表,抱歉我没法一一对应起来了。

      • precomx说道:

        好的,现在我的PE的WOW64还是有问题,运行32Bit程序,有的没反应(如Win$Man),有的出现“应用程序0xc0150004错误,请单击确定关闭应用程序”(如NT6硬盘安装器),估计是注册表问题(我用了知彼而知己的文章http://hi.baidu.com/zbezj/item/49d491d99b4bb3fc92a97453 里面的注册表文件和复制文件脚本,也把您的“给winpe添加explorer教程(续):文件列表”文章里面所需文件做成脚本,所以应该是不会缺少文件了)。请问应该怎样解决呢?
        另外一个比较麻烦的问题:我把.NET.Framework和VC运行库做成7zip压缩包,希望在进入PE之后在桌面上放一个bat来加载它们,因为这些东西太大,希望封装到另外的wim另外,这个具体怎么实现呢?

        • wingwy说道:

          可能是注册表不全。另外加载wim比较方便,你把这个wim和pe的wim文件放到一起,你只需要能识别启动pe的盘的盘符,然后就能找到这个wim文件,用imagex展开到硬盘就可以了。

          • precomx说道:

            那么用PECMD的MOUN命令可以吗?关键是光盘盘符是不确定的,这是个麻烦事

            • wingwy说道:

              我不常用pecmd,所以不清楚他的功能。批处理找光盘盘符是可以的,你可以在光盘里面放一个空文件,取一个不常用的文件名,比如myisofile。然后在bat文件中写for循环找这个文件,盘符从CDE一直到Z,只要找到myisofile这个文件就跳出,这时的盘符就是光盘的盘符。

              • precomx说道:

                顺便问问,怎么修改PE启动画面?如替换成Win7的“正在启动Windows”

                • wingwy说道:

                  win7那个比较麻烦,好像是bmp图像放到wim中,最后在bootres中,而且还有数字签名。你是说win8的改win7的?我不清楚,可以google一下。

precomx 留下回复(本站有评论邮件通知功能)