前言:虽然有winbuilder一类优秀的制作pe的工具,我还是打算写一个从WAIK入手,”手工”制作winpe并加入explorer的教程.此教程很基本,分为两个部分(后加入文件列表部分,共3部分),前面部分提及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还是不能运行).文件的加入相对于注册表的是显而易见的,即使是才接触计算机的网友,只要他会复制和粘贴就没问题.另外,你还可以用鼠标右键看文件说明。

详细的文件列表可以参见 给winpe添加explorer教程(续):文件列表  http://www.wingwy.com/archives/2011_03_868.html

其实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  .

标签: ,

331 条评论 发表在“给winpe添加explorer教程(上):基础知识及explorer的初步加入”上

  1. 人之初说道:

    3.1……..D:\TEMP\winpe3.1\org\win7pe (路径随意,以后以这个路径为例).
    3.2……..D:\TEMP\winpe3.1\org\win7pe\sources

    请问这两个文件夹是本来就有还是新建的?

  2. WUYOUPE说道:

    里面的很多工具和文件最好能提供一下下载地址什么的,谢了!

  3. WUYOUPE说道:

    站长,您好:
    请问waik_supplement_zh-cn.iso这个文件在哪里有?

  4. qwe说道:

    你好!我修改了那个权限之前不能修改那些注册表,但是修改后却不能卸载配置单元了,什么原因呢?

    • wingwy说道:

      你好,好像关了重开就可以了

      • qwe说道:

        不行,还是一样,不过现在我解决了。可能是之前我用的是网上下载的注册表编辑器吧,我用系统自带的就能卸载了。但是现在又有新问题啊,我做成镜像之后载入到U盘里,开机动画之后就显示一串英文说问题出在\windows\system32\halmacpi.dll,什么原因呢?方法应该是对的,因为之前我做cmd版的都成功

  5. swc1209说道:

    请问 WAIK 自带做出来的命令行PE 怎么不带网络的 啊 如何设置IP 帮助上写支持网络的 能用net use 来网络共享部署,谢谢

    • wingwy说道:

      你好,这样做出来也带网络的,但是你机子可能没有网卡驱动,所以显示网络不可用。用drvload就可以加载驱动

  6. 雷雷说道:

    5.3.2 在pe-soft下搜索Interactive User,找到后全部删除.

    5.3.3 在pe-soft下搜索D:\ 全部替换为X:\

    5.3.4 导入刚才的soft-init.reg替换掉win7安装文件的,卸载pe-soft
    做完上面的几步后,是不是把WIN7SP1下面的SOFTWARE 替换掉PE下面的SOFTWARE呢?

  7. BEN说道:

    WING大哥又来麻烦你了。我PE右键的个性化按你方法本来是弄没有了。然后我找到WIN7的注册表加进去,但是按了以后会出现explorer未知错误,我对照其他其他PE的右键那里的注册表,是对的,HKEY_CLASSES_ROOT\CLSID\{ED834ED6-4B5A-4bfe-8F11-A626DCB6A921}和HKEY_CLASSES_ROOT\DesktopBackground\Shell\Personalize就是不知道其他地方那里有。不知道大大有相关经历吗。

  8. BEN说道:

    博主好,经过多次文件添加实验,都找不到出错原因,最后我用你的Software和System文件覆盖我的这两个文件,发现能进桌面。。你的是64位的,我的是X86注册表,竟然可以运行,让我无语了。也就是注册表的问题了。但是我步骤是和你一样的。我最后搜索你的注册表,发现Software里还有好多Internal User和D:\选项,比我的多好多。想请教博主注册表还有哪里需要注意和需要操作的吗?麻烦博主了。

    • wingwy说道:

      你好,我记得的都写了,Internal User和D:我是删除干尽了的,应该没有。 至于x86和x64混用注册表,几乎是不可能的,我也不知道为什么你的那么奇怪

  9. zfb说道:

    你好,能不能发布你的wingwy-pe3.1-v2.iso下载地址。谢谢

  10. BEN说道:

    请问博主,我下了你的PE,但是在虚拟机里是蓝屏的,为什么呢。我现在还没写入U盘实验,所以没法给出其他对比。

  11. lxj说道:

    wingwy,你好~

    5.3 中导出为soft-init.reg的是“D:\TEMP\winpe3.1\org\mount\Windows\System32\config”下的 software
    5.3.2 及 5.3.3 修改的是win7sp1的install.wim文件展开后“Windows\System32\config”下的 software
    之后呢,install.wim文件展开后“Windows\System32\config”下的 software 需要覆盖到“D:\TEMP\winpe3.1\org\mount\Windows\System32\config”下的 software 吗?
    文件都拷全了了,注册表也改好了,一次又一次的重来,explorer还是运行不起来,好困扰!

    • wingwy说道:

      你好,要覆盖文件,我的本意是用安装文件的software补充pe的software配置单元。所以一定要卸载后再覆盖。

      • lxj说道:

        嘻嘻,真好,跟我想的一样,不过还是有问题:

        1.为什么注册表都要改“x:\”要是刻成光碟,能保证是“x:\”吗?

        2.我现在没有用你给的文件列表,而是通过“dependency walker”报缺失文件时才添加,用类似的方法增加了一些系统自带的工具,有些运行良好,有些会报控件未注册,有些像explorer会后台运行一会儿就自动崩溃(“dependency walker”提示要看系统的log)…
        对于控件未注册,可以提供直接修改该注册表的方法吗?(用reg重启无效)还是直接修改software吗?
        对于后台运行一会儿就自动崩溃,需要看系统日志的怎么办呢?集成compmgmt.msc和mmc.exe进去看吗?

        • wingwy说道:

          是的,全部改成X: 对于控件未注册的dll文件,可以用regsvr32注册,系统日志有个pe的log文件,名字我忘了,你进入pe后再system32下找找最近生成的log文件就是了

  12. FENG说道:

    wingwy你好 你的文中有提到将software加载到注册表,不知是系统文件的software还是注册表的 我是新手 望多多指教 谢谢 感谢你的文章

  13. BEN说道:

    非常感谢作者,我遇到个问题,就是我按照你的方法修改注册表以后,进桌面的时候cmd窗口也出不来,而且还是黑屏的,什么都不能用。这个时候我没有改Microsoft\Windows NT\CurrentVersion\Winlogon的shell,还是cmd的,但是没有显示出来,我弄了好几次了。找不出原因。请问怎么解决?

    • BEN说道:

      我想是注册表的问题,因为没有替换的时候是能看到cmd的,但是注册表都是按你的步骤,WAIK的注册表保存为reg,再导入到修改后的WIN7software注册表中。不知道哪里有不对。

    • BEN说道:

      刚才发现我使用的是KB3AIK_CN.iso 里面的wim,而不是waik_supplement_zh-cn.iso的wim,我WIN7是RTM的,不是SP1,不知道会不会有影响?我试过把你那文件列表文件全部复制进去,但不替换,还试过只拷贝explorer的相关文件。但都不行。。进去就是黑屏。

      • wingwy说道:

        你好,版本对应起来就行,KB3AIK_CN.iso 对应win7和pe3.0,你需要win7安装盘中的software单元(不是sp1)。另外,注意替换D:我说的那个软件一次只能替换1000次,要确定替换完。

        • BEN说道:

          非常感谢你的回复。现在工作,所以都没时间弄。今天又试了一下,还是黑屏,我找到一个不同的地方就是你是用amd64版本的,我用x86版本的。不过我感觉应该是没关系的。

          • wingwy说道:

            你好,x86和x64这个确实不影响。是否sp1关系也不大,如果确认文件没问题的话,可以用sp1的,修改一次注册表,替换我的pe中的注册表文件,看看是否有问题。

            • BEN说道:

              非常感谢博主的回复,显示不出的问题已经解决了。是权限问题。虽然导入了,其实没有导入。。。现在能见到桌面,打开explorer.exe的进程时,在进程列表里是有显示explorer.exe但是没有想你一样可视化的窗口出现,应该是我文件少了。
              我现在只添加了你explorer支持那里的文件,不知道会不会是这个原因?

              • wingwy说道:

                你好,那个文件列表的各个支持部分只能是参考,我也不是完全按那个文件列表来的,pe需要各个windows功能的实现,而不是单单的explorer,所以我一来就添加了比较全的很多文件。也没有区分出支持explorer运行的所需要的最小文件集。

  14. macowen说道:

    此评论过长,已被wingwy编辑到
    给winpe添加explorer教程(续):文件列表 http://www.wingwy.com/archives/2011_03_868.html

    • wingwy说道:

      你好,多谢提供,这列表放评论太长了,是Make_PE3 的吧?我明天给你编辑了新开一个~

      • phantomvir说道:

        吓人啊! 怎么这么多?

        我慢慢看去…….不知道最终能不能弄出桌面,要是成功了我来谢你哈wingwy大哥

      • phantomvir说道:

        发现严重问题!!

        例如

        “1\Windows\System32\??-??\apphelp.dll.mui
        1\Windows\System32\??-??\browser.dll.mui
        1\Windows\System32\??-??\cfgbkend.dll.mui
        1\Windows\System32\??-??\compmgmt.msc
        1\Windows\System32\??-??\devmgmt.msc
        1\Windows\System32\??-??\devmgr.dll.mui
        1\Windows\System32\??-??\diskmgmt.msc
        1\Windows\System32\??-??\dmdskres.dll.mui
        1\Windows\System32\??-??\dmdskres2.dll.mui
        1\Windows\System32\??-??\dmocx.dll.mui
        1\Windows\System32\??-??\dmutil.dll.mui
        1\Windows\System32\??-??\filemgmt.dll.mui
        1\Windows\System32\??-??\findstr.exe.mui
        1\Windows\System32\??-??\FirewallControlPanel.dll.mui
        1\Windows\System32\??-??\fsmgmt.msc
        1\Windows\System32\??-??\fsutil.exe.mui
        1\Windows\System32\??-??\fwcfg.dll.mui”

        这中间的??-??是什么文件夹? 这个留言长度有限吗?估计是超长名文件夹被省略了 请速解决!

  15. zzq82004461说道:

    出现桌面,怎么点什么都提示“……不支持此接口……”,这是怎么回事呢?

    • wingwy说道:

      注册表配置不对

    • BEN说道:

      你好,请问一下你制作的是64位的吗?还是X86的。为了进桌面添加的文件只是按照wingwy的文件列表吗?我始终进不了桌面,在taskmgr的进程里面是能看到进程,等一下就会自动结束进程了。能指导交流下吗?非常感谢。

  16. zzq82004461说道:

    你好,最近读了你的“……添加explorer上”自己也试着做了下,可是却无法显示你那篇文章中的最后一幅图。我想可能是仍有重要文件没有添加到,想向您请教下,若方便的话请在添加文件方面在给我等详细讲解下吧,先谢谢了。

    • wingwy说道:

      你好,单独的explorer运行文件列表太冗长,而且意义不大,你如果能运行explorer又会添加其他文件来支持实现其他功能。 如果真的需要,可以参看winbuilder的脚本

  17. longhornfans说道:

    大哥能不能开个群交流一下啊 我很多都不明白,现在急需要制作一个属于我自己的英文的PE

    • wingwy说道:

      你好,不好意思,我qq不太方便。英文版和中文版完全一样的做法,注册表用win7英文版,waik也设成英文就是了

  18. longhornfans说道:

    waik_supplement_zh-cn.iso 有下载地址吗?

  19. KIMI说道:

    请问除了
    Explorer.exe
    ExplorerFrame.dll
    还要添加什么文件
    因为没有提示要什么文件所以自己还添加了如下的文件
    OobeFldr.dll
    shell32.dll
    不知是否正确,希望能给出需要加入文件的列表
    不胜感激

    • wingwy说道:

      文件列表一大串,可以参考winbuilder的脚本,我没有单列出来,如果只是列一个仅仅为了run一个explorer的最小文件列表,我觉得意义不大.pe不单是为了explorer,你还要加入其他组件

  20. 匿名说道:

    […] […]

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