本帖最后由 sairen139 于 2020-6-17 21:59 编辑
原生态winpe添加explorer教程
简单的说windows系统程序的正常运行至少要满足两点,一个是相关的支持文件出现在正确的路径中(如各个dll文件和mui文件等),另外一个就是正确的注册表配置(程序运行的设置和支持文件的路径等)。明白了这点,一切就很清晰了。基本的explorer运行并不需要任何第三方程序的加入或是对微软的文件进行任何修改,只要添加了支持explorer运行的文件,配置好了注册表,就可以在winpe中正常运行explorer了。 2)、其中文件的加入部分这里不想细讲,因为它既繁琐又简单,意义不大,为什么呢?你运行程序,它提示你少什么文件,你加入就是了。如果你有耐心,可以一个一个加(当然,有时候他并不会提示你缺少某个文件,而explorer还是不能运行),文件的加入相对于注册表的是显而易见的。即使是才接触计算机的网友,只要他会复制和粘贴就没问题。另外,你还可以用鼠标右键看文件说明。 其实winpe的制作就是不断地积累,吸收前人的经验。我更喜欢先对比别人的winpe,看看别人都加了些什么文件。换一个思路,先添加足够的文件,运行起了explorer后再删除。因此建议直接把wingwy-pe3.1-v2.iso中winpe.wim文件展开,同时展开win7sp1的install.wim文件,依照winpe文件列表复制win7的安装文件到你要做的winpe目录D:\\TEMP\\winpe3.1\\org\\mount下(实现此步有很多办法,比如用xcpoy带/s /h /d /y 参数)。实在不行就直接复制wingwy-pe3.1-v2.iso展开的文件,注意不要替换文件。 3)、现在动winpe的注册表了,注意 D:\\TEMP\\winpe3.1\\org\\mount\\Windows\\System32\\config下的三个文件 software, system 和 default,用注册表编辑器加载software单元,命名为pe-soft全部导出为soft-init.reg后,卸载pe-soft配置单元。 a、打开win7sp1的install.wim文件(可以用7-zip,用imagex展开也可),定位到Windows\\System32\\config下,把software文件加载到注册表,同命名为pe-soft。到时你会遇到权限问题,可先在”权限”-”高级”中替换”所有者”为你当前用户,再在”权限”中添加好权限。 b、在pe-soft下搜索Interactive User,找到后全部删除。 c、在pe-soft下搜索D:\\ 全部替换为X:\\。 d、导入刚才的soft-init.reg替换掉win7安装文件的,卸载pe-soft. 4)、用imagex打包,生成iso后启动vm测试,还是命令提示符窗口,不过你现在运行explorer.exe看看,熟悉的explorer是不是已经出来。 好了,explorer已经成功运行了,不过显然达不到大家需要的效果,比如:没有任务栏、没有桌面,下面就继续修改注册表。 5)、把任务栏和桌面显示出来。 a、加载winpe的software文件到注册表,命名为pe-soft,找到pe-soft下\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon下,把”Shell”=”cmd.exe /k start cmd.exe” 改成 “Shell”=”explorer.exe”。 b、找到正在运行的win7的HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Svchost,导出全部项并添加到pe-soft下的Microsoft\\Windows NT\\CurrentVersion\\Svchost(此步骤在这里似乎不是必须的,不过为了其他功能的正常运行,建议添加)。 c、合并打包测试,再运行explorer,任务栏和桌面都出来了(注: 可能有winpe友会质疑wingwy-pe3.1-v2.iso里含有第三方文件,不过你可以把它们全部删除后打包测试,不影响运行explorer,调出任务栏和桌面)。
至此,在不修改原版文件,不添加第三方文件的基础上,初步实现了explorer的运行。不过大家也看到,这样一个winpe显然是不能让人满意的。 原生态winpe添加explorer教程(下):explorer的完善设 置 前面讲到explorer初步加入winpe的过程,然而,这样的winpe显然需要进一步改进。继续,GO! 6、winpe运行explorer的初步完善: 1)、win7主题的启用 a、找到正在运行的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中。 b、在pe-sys的\\Setup\\AllowStart\\中添加项Themes。 c、这是唯一需要文件修改与添加的地方,详见 http://bbs.wuyou.com/viewthread.php?tid=167092,用hex编辑器打开winlogo.exe,查找4D0069006E0069004E005400,最后两位改为01即可。下载ux.exe,在运行explorer前运行此小程序即可。 2)、桌面背景的应用 a、找到注册表 HKEY_LOCAL_MACHINE\\System\\ControlSet001\\Control\\ProductOptions,导出,并导入到pe-sys的ControlSet001\\Control\\ProductOptions下。 b、在pe-sys下\\ControlSet001\\Control\\Lsa添加“LmCompatibilityLevel”=dword:00000002。 c、找到正在运行的win7注册表 HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer下,导出Advanced,Personalization和HideDesktopIcons备用,导出HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\DWM备用。 d、加载D:\\TEMP\\winpe3.1\\org\\mount\\Windows\\System32\\config下default文件到注册表,并命名为pe-def,把c步骤中的4项修改路径后导入pe-def。好了,现在winpe已经能很好地运行explorer了。 7、通过winpe自带的几个小程序实现一些常用功能 1)、驱动的加载程序 —— drvload.exe 经常有人问该怎么加入驱动,准备好你的驱动文件,看了下面的图片你就清楚了,格式就是drvload (inf文件路径)。 2)、winpe的初始化设置 —— wpeinit.exe 首先你得建立一个应答文件,打开Windows系统映像管理器,想偷懒的可以直接以win7的安装文件为基础,打开安装盘source文件夹下install_windows 7 ultimate.clg,再新建应答文件,传送Components中的Microsoft-Windows-Setup到winpe,在这里可以设置屏幕分辨率、计算机名和页面文件等,删掉不需要的部分,保存为init.xml。 调用如下: wpeinit.exe /unattend=X:\\Users\\Default\\Documents\\init.xml 3)、winpe工具 —— wpeutil.exe 这个工具非常实用,大家可以参看WAIK的帮助文件,如果不用第三方程序,winpe的关机和重启就是通过它实现的,如: wpeutil shutdown 关机 wpeutil reboot 重启 wpeutil CreatePageFile /path=C:\\pagefile.sys。设置虚拟内存 wpeutil DisableFirewall 开关防火墙(Enablefirewall) 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的其他功能和设置: 1)、windows程序的添加 由于直接使用了修改的win7的software注册单元,其他功能的添加就更简单了,基本不用改注册表,直接复制文件就是了。 a、比如要加入ie8,就复制Program Files\\Internet Explorer下所有文件(以及system32文件夹下相关文件)到D:\\TEMP\\winpe3.1\\org\\mount\\Program Files下即可。注意这是64位ie,你要愿意也可以Program Files(x86)下的32位ie。 b、同理,要使用windows的查看图片功能,就复制Windows Photo Viewer即可,其他类似。 c、要用控制面板、控制台,就复制相应的cpl和mmc文件,要使winpe支持.net framework,将win7下的assembly和Microsoft.NET放进去就可以了(同时支持v2.0和v3.0,v3.5会很大)。 d、64位winpe的32位程序支持(WOW64)同样不需要配置注册表,拷贝syswow64以及system32下的wow相关文件就可以了。注意,要支持多少wow64程序取决于你拷贝syswow64文件夹中的文件。道理很简单,和system32中的一样,你不复制mfc.dll不会对你的winpe有影响,但是那样你就不能支持需要这个dll的程序。 2)、windows服务的添加 winpe不能安装msi格式的安装包,我们便以给winpe添加msi服务为例(添加其他服务类似)。 a、确认文件复制完整后,把加载win7安装文件的system配置单元到注册表并命名为pe-sys,找到下面的ControlSet001\\services\\msiserver,全部导出备用,卸载pe-sys。 b、加载winpe的system配置单元 (D:\\TEMP\\winpe3.1\\org\\mount\\Windows\\System32\\config下system文件)到注册表并命名为pe-sys,导入刚才导出的msiserver即可。 3)、windows的一些设置 winpe的default单元主要对应windows的HKEY_CURRENT_USER,software单元对应HKEY_LOCAL_MACHINE\\SOFTWARE,system单元对应HKEY_LOCAL_MACHINE\\SYSTEM,所以你要设置计算机名、桌面图片、oem信息和图片、隐藏夹显示与否、开始菜单、任务栏和桌面什么的全在这里,位置和项目与windows的类似。 4)、微软拼音的添加:文件很大,不推荐。真的想要可以看waik的帮助文件,批处理都给你写好了。 9、一些需要注意的地方和其他程序的加入: 1)、计算机管理不能在“我的电脑”上用右键打开,加载winpe注册表software单元,修改 Classes\\CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\Manage\\command 为X:\\System32\\mmc.exe /b。 2)、“关机”按钮无效,可以改software单元的 Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer 添加 “NoClose”=dword:00000001 或 0(移出或显示”关机”按钮)。 3)、如果你不添加桌面右键菜单“小工具”很难看,可以去掉。同样,删除 \\Classes\\Directory\\Background\\shellex\\ContextMenuHandlers\\Gadgets 和Classes\\DesktopBackground\\Shell\\Gadgets 即可。 4)、用户文件夹的更改,默认在config文件夹下,建议改到X:\\Users\\Default下,可在Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\S-1-5-18 下修改。 5)、MSDaRT工具的加入,可以用7zip打开MSDaRT65_x64.msi文件,提取其中的tools.cab和Sweeper.cab中mount文件夹合并到winpe即可(32位类似)。 6)、其他绿色程序的加入与快捷方式:如果文件不大,可以直接放到program files目录下并和wim文件一起打包,你也可以单列出来放到光盘上,或打包成新的wim文件,进入winpe后再挂载,桌面快捷方式在\\Users\\Default\\Desktop,锁定到任务栏快捷方式在\\Users\\Default\\AppData\\Roaming\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar,另外还需要导入default单元的 \\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Taskband 项。 7)、整合第三方程序:同理,在8.3)中已讲了注册表的对应,照着添加就是了。可以用注册表工具分别扫描安装程序前后的注册表,提取需要写入的键值(相对于文件加入操作)。 10、有关winpe的一些讨论: 1)、关于winpe其他文件和驱动的加入以及精简 大家注意到用微软自带的winpeshl.exe载入explorer关机按钮无效,如果需要可以使用pecmd,方法详见http://bbs.wuyou.com/viewthread.php?tid=144701,pecmd有自己的一套东西,操作起来会方便一些,大家可以根据需求与喜好用pecmd替换掉winpeshl,并写入winpe注册表software单元中的CmdLine。驱动可以加入windows/inf下面,也可以外置,你要什么就加什么,对于不需要某些驱动的人,多的驱动反而要精简掉,所以驱动这个东西还是自己加比较好。 winpe的精简总是矛盾的,比如字体文件,原版的中文winpe3.1字体文件很大,其中mingliu.ttc有31M,网上也有号称完美精简的字体,用了后文件是小了,但有些程序总是乱码,或是对不齐,其实这个”完美精简”只是在特定的条件下,用(或不用)特定的程序才能实现。你可以反过来想一想,如果真的能”完美”,微软何必要把它做到31M再留给你精简(还有shell32.dll等也类似)?再如:msyh.ttf也有21M,砍掉后就没启动动画了,当然其他一些字体或是文件确实用不上(如其他语言的nls,mui文件),或者你用的那些程序都用不上这些东西就完全可以删除。 结语:“原生态winpe添加explorer的初级教程”到此结束,里面讲到的东西都很基本,也肯定有很多不准确的地方,做出来的winpe也很粗燥。其实用winbuilder一类的工具完全可以轻易、快速的做出来,不过众口难调、各有所爱。别人的winpe再好,对于你来说不一定好。一个适合自己的WINPE才是最好的。希望本文能对WINPE爱好者们制作自己的WinPE有所帮助,愿大家都能做出自己满意的winpe! |