书接上回 全网首发,自制ADK To Win11PE(1)中文+包
我这里用的win11版本是10.0.22621.963(22H2)
pe的制作其实就是文件和注册表的修改加入而已,难谈不上,就是烦
本文讲的就是加入explorer中的文件和注册表操作,可能仅适用于Win11,win10也许适用(11和10的内核一样)
开始之前请改权限,包括之后的注册表都一样要改权限,防止遇到各种拒绝访问的情况。以%PE%的目录WinPE_amd64
为例,右键-属性-安全-高级
修改权限总步骤如下,这个是最全面最管用的步骤:
点击所有者旁边蓝色的更改,然后直接看图操作,选择这个只有一个小人的Administrator
(你当前用户名)
确定完回到总步骤的那个窗口,勾上替换子容器和对象的所有者
勾选使用可从此对象继承的权限项目替换所有子对象的权限项目
点击添加,选择主体,勾选完全控制,看下图
最后按改完图中的确定就行,弹出来的窗口都点是就行
1.因为接下来就要添加explorer等功能缺失的文件了,同版本的官方正常镜像是必不可少的(如都是10.0.22621),可以去新版MSDN登录后用迅雷下载。
2.注意ADK的描述,如下载时为22H2版本的64位win11ADK,就要下载22H2版本的64位business Win11(consumer版本好像是缺功能)。
3.解压官方镜像的sources\install.wim
出来的Win11Pro
目录也要改权限,解压命令类似imagex /apply install.wim 3 D:\Win11Pro
(卷3为专业版),为了便于操作,该目录我也加到了环境变量mount11
。
4.如版本不一样继续操作的话在个人对比成品PE注册表和bcompare对比成品PE看缺失文件时会很难受,也可以重新换用Win11Pro\Windows\System32\Recovery
下的winre.wim,这个的版本与正常OS肯定一样,就是文件大了点,再按照上篇文章操作加入包和中文就可以接着淦了。
5.用regedit操作注册表的权限时,如果出现"注册表编辑器无法在当前所选的项及其部分子项上设置安全性"之类的提示,大多是按照本文方法去修改Win10PE的注册表出现的,只需要关掉regedit去Registry Workshop再设置一边所有者就行。
6.这个权限的修改操作得刻进DNA里面,因为后面用的比较多
文件加入有三种可以学习的办法,淦出来的列表中文件能不替换还是尽量别替换,具体看文中阐述。每一个方法都有自己的特点,都值得学习。
tasklist命令可以准确分析出进程运行时所用的DLL文件,可以用于分析explorer.exe
的依赖,但有些dll分析出来如系统核心的ntdll.dll这种不替换也是亲测可运行的。
PS:进行下列操作前请将下面出现的第一条命令复制好,因为浏览器会关掉(我的是Chrome)建议先看完这一节再操作
Ctrl+Shift+Esc打开任务管理器,先点击左上角文件-运行新任务,输入cmd
,勾选以系统管理权限创建此任务
,粘贴但不运行以下命令:
explorer.exe | tasklist /M /FI "ImageName eq explorer.exe" /FO LIST
接着点详细信息,选择explorer.exe
,结束进程树
PS:除了任务管理器的大部分东西都会关掉,画面有部分全白,这里截不了图,看文字
运行刚刚粘贴的命令,这个是开启explorer的同时使用tasklist
看explorer的依赖,文件就会自己出来(doge)
等到运行的命令不动的时候(很快就可以出来的了),将输出的"模块:"
后面的文件名都复制到一个文本文档里面,我这里起的名字是explorerdll.txt,记住该文件路径,然后直接关掉cmd,对刚打开的explorer没影响,此时为刚启动的依赖DLL。
新开一个命令行,去掉前面explorer运行一遍,毕竟运行时
和刚启动
所需DLL是可能不同的,为了让依赖更全面一点:
tasklist /M /FI "ImageName eq explorer.exe" /FO LIST
再复制到explorerdll.txt里面,两次复制都记得去掉空格(选中前面空格Ctrl+H替换,替换栏什么都不要写(这里两次的DLL有重复的,excel/WPS表格去重是一个不错的选择)
把它粘贴到excel里面,Ctrl+A选中那一列,看图操作
然后窗口弹出直接选删除重复项,确定就行,想排序直接点重复项左边的“排序”即可,再粘贴回explorerdll.txt,保存,此时获得的explorerdll.txt即为explorer运行时所需真正的DLL,不过有一部分是非必要加入的。
接下来就自由选择复制操作了,可以用beyond compare4(循环搜索),也可以自己写脚本xcopy,反正把文件复制进去PE目录就行(一定要记得复制DLL目录(System32等)\zh-CN\xx.mui文件(虽然有些DLL没有)和\Windows\SystemResources\xx.mun文件!!!.mun不多但很关键,往往和决定你的explorer启动成败)。注意,tasklist复制完成的文件还缺了一点才能启动explorer.exe,请见2.3。
此软件也是一个分析依赖的好手,但最烦的就是要逐级展开一个个文件细看,再去bcompare4搜索,效率不如tasklist,还有一个最大的问题是这里的DLL套DLL的引用重复率较高,也就是说你还要靠脑子来记住哪个dll复制过了。除了左边的展开栏,其他的东西全都不用看,只看文件名就行,没啥好讲的(很全面,但就是太全面了)。
文件列表不是万能的,但是做win11pe时参考他人的文件列表就不用自己找文件,稍微方便一点点。但随着各种功能的更新,新的依赖就会出现,文件列表就不全了,可能提供文件列表的大神再做其他功能的时候加进去的dll误打误撞就能启动explorer.exe,但人家不知道,如果我们一味死板照搬,explorer.exe是启动不了的(食用指南有描述),做出来的pe就成功不到哪里去,2.1的tasklist方法就挺全面的。
文件列表目前网上流传的有wing大的https://www.wingwy.com/archives/2011_03_868.html,不过这个是win7的,已经过时了,这里我们就看Slore大的Wimbuilder2(2022-02-02版本)的文件列表(目录:WimBuilder2-Full.v2022-02-02\Projects\WIN10XPE\01-Components\00-Shell\Explorer
,文件为submain.bat
),真的很感谢S大,不然我的explorer都显示不出来(缺文件)(Wimbuilder2传送门无忧论坛http://bbs.c3.wuyou.net/forum.php?mod=viewthread&tid=409685&extra=page%3D5)
先贴一份代码出来
\Windows\SystemResources\Windows.UI.ShellCommon
@\Users\Default\AppData\Roaming\Microsoft\Windows\SendTo\
Compressed (zipped) Folder.zfsendtotarget
Desktop (create shortcut).DeskLink
desktop.ini
; Windows Trusted Runtime Interface Driver
\Windows\System32\drivers\WindowsTrustedRT.sys
; Explorer
\Windows\explorer.exe
\Windows\??-??\explorer.exe.mui
@\Windows\System32\
comctl32.dll
AppHelp.dll,AppResolver.dll,atlthunk.dll,avifil32.dll,clip.exe,Clipc.dll
control.exe,comsvcs.dll,CoreMessaging.dll,CoreUIComponents.dll,cscapi.dll
ctfmon.exe,desk.cpl,edputil.dll
ELSCore.dll,IconCodecService.dll,imageres.dll,InfDefaultInstall.exe
InputSwitch.dll,mfperfhelper.dll
MrmCoreR.dll,mscories.dll,MsCtfMonitor.dll,msutb.dll,mycomput.dll,policymanager.dll,pdh.dll,PhotoMetadataHandler.dll,pnputil.exe
ProximityCommon.dll,ProximityCommonPal.dll,ProximityService.dll,ProximityServicePal.dll
rmclient.dll,sendmail.dll
SettingSyncCore.dll(无),SharedStartModel.dll(无),ShellCommonCommonProxyStub.dll,shfolder.dll,shutdown.exe
StartTileData.dll,sti.dll,stobject.dll,StorageUsage.dll,systemcpl.dll,TDLMigration.dll,TextInputFramework.dll,thumbcache.dll
twinapi.appcore.dll,twinapi.dll,twinui.appcore.dll,twinui.pcshell.dll,UIAnimation.dll,UIRibbon.dll,UIRibbonRes.dll
Windows.Gaming.Input.dll,Windows.Internal.Shell.Broker.dll,Windows.Networking.Connectivity.dll,WorkFoldersShell.dll,wpdshext.dll,zipfldr.dll
windows.immersiveshell.serviceprovider.dll
credssp.dll,mblctr.exe,TextShaping.dll
Windows.Globalization.dll
+ver > 17000
cdp.dll
coloradapterclient.dll(无)
dsreg.dll
VEEventDispatcher.dll(无)
+ver > 17700
; dll for StateRepository (AppRepository). The StateRepository service is not registered in the Registry
StateRepository.core.dll,Windows.StateRepository.dll
Windows.StateRepositoryBroker.dll
Windows.StateRepositoryCore.dll
Windows.StateRepositoryClient.dll
+ver >= 18885
CoreMessaging.dll,CoreUIComponents.dll,rmclient.dll,twinapi.appcore.dll,InputHost.dll,TextInputFramework.dll
WindowManagement.dll
WindowManagementAPI.dll
Windows.UI.dll
+ver >= 20150
dmenrollengine.dll
+ver >= 22000
windowsudk.shellcommon.dll
+ver >= 22610
Windows.UI.Core.TextInput.dll
Windows.UI.Immersive.dll
; remove ver check (add with any ver)
+ver*
+if "%VER[3]%" = "19041" Or "%VER[3]%" = "19042" Or "%VER[3]%" = "19043"
shell32.dll
SHCore.dll
KernelBase.dll
-if
; Advanced system setting
sysdm.cpl,DeviceProperties.exe,SystemPropertiesAdvanced.exe,SystemPropertiesComputerName.exe
systempropertieshardware.exe,systempropertiesperformance.exe
systempropertiesremote.exe
; Device Manager cpl
hdwwiz.cpl,hdwwiz.exe
; Timedate Mouse Region, Language cpl
timedate.cpl,main.cpl,intl.cpl
; Browse Folder
;ExplorerFrame.dll
; Previous version tab
twext.dll
; Shell extension for Windows Script Host
\Windows\System32\wshext.dll
; Eject usb
DeviceCenter.dll,DeviceEject.exe,StorageContextHandler.dll
; System Information (Optional)
msinfo32.exe
; Map a network drive also in network addition
netplwiz.dll,netplwiz.exe
; Sharing from explorer
dtsh.dll,shpafact.dll,networkexplorer.dll,provsvc.dll(无)
; Password Notification from event-log
kdcpw.dll
; Addional Cmds
cacls.exe,Comp.exe,choice.exe,Fc.exe,findstr.exe
Help.exe,Label.exe,Makecab.exe,sc.exe,Sort.exe
taskkill.exe
; ShellHWDetection
shsvcs.dll
; DLNA Namespace
dlnashext.dll
; Taking Ownership (Appinfo and ProfSvc services). ProfSvc services already here (profsvc.dll,profsvcext.dll,provsvc.dll(无),objsel.dll)
appinfo.dll,appinfoext.dll,objsel.dll,profsvc.dll,profsvcext.dll
; Version Info
winver.exe
解释一下食用方法,
1.@+目录代表在xx目录的意思,@下面的文件就都是在那个目录才有的,此处先不考虑WOW64(32位),先整完64位版本再说,
2.这里贴出来的都是要复制并替换进去的,包括第一行\Windows\SystemResources\Windows.UI.ShellCommon
整个目录,
3.分号代表注释,解释说明下面的文件干啥用,也是全部复制并替换!!
4.*号通配符代表符合要求的所有文件,
5.+if代表判断是否符合要求,-if结束判断,这个也不用管,除了61-65行win11所有if都满足,但是不满足的那个if的文件也要。脚本列出的全部文件都要!
6.开始的desktop.ini是系统文件,需显示受保护的系统文件才看得见
7.记得复制.mui和ExplorerFrame.dll.mun(列表没有)、shell32.dll.mun!!!
8.前面2.1说的缺文件就是这个\Windows\SystemResources\Windows.UI.ShellCommon
和ExplorerFrame.dll.mun、shell32.dll.mun等mun,复制进去差不多就到注册表修改了,要是注册表改完explorer还开启不了就再对比一下文件列表,添加功能,这里的文件列表把控制面板差不多都包含进去了
9.Win11壁纸\Windows\Web\Wallpaper\Windows\img0.jpg也复制进去
10.可以自己改造脚本复制文件,建议直接bcompare
11.win11中找不到文件的我都标出来了
12.一定要复制\Windows\System32\actxprxy.dll及其.mui,少了这个东西explorer启动不了,还有shellstyle.dll,少了它explorer只能卡在全白的界面(列表中无)
13.想要win10/11那种窗口效果的替换uxtheme.dll,themeservice.dll,themeui.dll等与主题有关的dll及其mui,加入DWM那里有
14.壁纸的设置在下一章,修改pe-def的时候会提到,本文先让窗口版本的explorer启动起来先,要提前设置的可以跑到[HKEY_LOCAL_MACHINE\pe-def\Control Panel\Desktop]设置"Wallpaper"=“X:\Windows\Web\Wallpaper\Windows\img0.jpg”
同理把DWM桌面运行的也加进去,让我们的PE长得好看点(虽然暂时没什么大用)
@\Windows\System32\
; Theme and dwm
dcomp.dll,d3d11.dll,dxgi.dll
dwm.exe,dwmcore.dll,dwmghost.dll,dwminit.dll,dwmredir.dll,hotplug.dll
themeservice.dll,themeui.dll,twinapi.appcore.dll,twinui.dll,ubpm.dll,uDWM.dll,wdi.dll
Windows.Gaming.Input.dll,Windows.UI.Immersive.dll
CoreMessaging.dll,CoreUIComponents.dll,ISM.dll,rmclient.dll
+ver > 18950
GameInput.dll
+ver >= 22000
wuceffects.dll
+ver*
+if "%VER[3]%" = "19041" Or "%VER[3]%" = "19042" Or "%VER[3]%" = "19043"
shell32.dll
SHCore.dll
KernelBase.dll
-if
; already in winre.wim, add for others, like winpe.wim(ADK)
+if "%opt[build.wim]%" <> "winre"
d2d1.dll,d3d10warp.dll,D3DCompiler_47.dll,DXCore.dll
-if
再多说一个都要做的,PE的Windows\System32下新建winpeshl.ini
,这个是WinPE外壳shell自动会运行的程序清单,里面写上
[LaunchApps]
wpeinit
cmd
先初始化PE,再运行一下cmd防止PE刚开机就无限重启(如果注册表修改pe-soft\Microsoft\Windows NT\CurrentVersion\Winlogon下
的Shell值为explorer.exe
(PE中值为cmd.exe /k cmd.exe
),winpeshl.ini里面又加上explorer.exe,目前仅添加这些文件的PE就会因为explorer.exe外壳无法运行而无限重启,外壳即为支撑一个系统的架子,如果外壳关掉了PE就直接GG了)。
想必小伙伴都等不及了吧,现在先将在D:\WinPE_amd64文件夹下新建2个文件夹,一个叫原Win11
,一个叫原pe
,备份一下两个系统的注册表
在两个文件夹下分别放入两个系统\Windows\System32\config
下的DEFAULT,DRIVERS,SOFTWARE,SYSTEM
四个配置单元
复制完成后将原win11\SOFTWARE
直接替换掉%mount%\Windows\System32\config
下的配置单元,下面就是以官方的Win11注册表为底,然后导入PE的注册表,确保PE的注册表正常运行,又具有Win11的功能。
现在先把PE的注册表导出去再说,管理员身份运行regedit
,先点击HKEY_LOCAL_MACHINE
,
然后文件-加载配置单元,
选择3.1导出的原pe\SOFTWARE
,确定后命名为pe-soft
,操作Win11的SOFTWARE时也要取同样的名字,不然就导了个寂寞。
跟复制文件的时候一样,操作注册表也要改权限,右键pe-soft,选择权限,和复制文件时一样的操作,先改所有者,继承,再添加完全控制,不再赘述。
关掉regedit,管理员身份运行Registry Workshop
,没有的自己下(PS:很重要的一点!!在卸载配置单元的时候不能 regedit和workshop 两个一起打开,不然会直接提示拒绝访问,只能关掉一个去另一个卸载配置单元。有时workshop操作完之后直接卸载也是拒绝访问,这个是它自身的问题,只能关了重开再去卸载,或者关了打开regedit卸载)
然后点击pe-soft,Ctrl+F查找C:\
和D:\
,全部替换成X:\
(大写X)(查找的配置如图)
找到之后Ctrl+A全选,右键替换
注意,workshop每次只能搜索1000个结果,结果数字是1000就要多搜几下
搜完之后搜Interactive User
,全部替换成空(不是删除,删除后explorer打不开)
PS:搜索Interactive User的时候有时会出现这两个二进制的注册表项,这两个东东替换不了的不用管它
然后搜一下$Windows.~BT\
,有的话替换成空,没有就不管了(win11好像是没有这个东西了)选择pe-soft,文件-导出,随便起一个名字,记得住就行
卸载PE的software,加载PE刚替换进去的Win11software,有任何更改都可以直接保存到PE系统里面了。
先改权限,然后跟操作原PE的注册表一样,搜索替换,修改完成后双击导入pe-softinit.reg
,然后直接卸载pe-soft。
HKEY_LOCAL_MACHINE
下加载PE\Windows\System32\config
下的DEFAULT
,命名pe-def
,记得改权限。pe-def的修改就简单一点,一行命令
reg add "HKLM\pe-def\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v TaskbarMn /t REG_DWORD /d 0 /f
然后把这坨代码保存为后缀.reg文件,双击导入
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\pe-def]
[HKEY_LOCAL_MACHINE\pe-def\Control Panel]
[HKEY_LOCAL_MACHINE\pe-def\Control Panel\Desktop]
"AutoColorization"=dword:00000001
"Wallpaper"="X:\\Windows\\Web\\Wallpaper\\Windows\\img0.jpg"
[HKEY_LOCAL_MACHINE\pe-def\Software]
[HKEY_LOCAL_MACHINE\pe-def\Software\Microsoft]
[HKEY_LOCAL_MACHINE\pe-def\Software\Microsoft\Internet Explorer]
[HKEY_LOCAL_MACHINE\pe-def\Software\Microsoft\Internet Explorer\Desktop]
[HKEY_LOCAL_MACHINE\pe-def\Software\Microsoft\Internet Explorer\Desktop\General]
"WallpaperSource"="X:\\Windows\\Web\\Wallpaper\\Windows\\img0.jpg"
[HKEY_LOCAL_MACHINE\pe-def\Software\Microsoft\Windows]
[HKEY_LOCAL_MACHINE\pe-def\Software\Microsoft\Windows\CurrentVersion]
[HKEY_LOCAL_MACHINE\pe-def\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects]
"VisualFXSetting"=dword:00000003
[HKEY_LOCAL_MACHINE\pe-def\Software\Microsoft\Windows\CurrentVersion\Themes]
"InstallTheme"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\
00,74,00,25,00,5c,00,72,00,65,00,73,00,6f,00,75,00,72,00,63,00,65,00,73,00,\
5c,00,54,00,68,00,65,00,6d,00,65,00,73,00,5c,00,61,00,65,00,72,00,6f,00,2e,\
00,74,00,68,00,65,00,6d,00,65,00,00,00
"InstallVisualStyle"=hex(2):25,00,52,00,65,00,73,00,6f,00,75,00,72,00,63,00,65,\
00,44,00,69,00,72,00,25,00,5c,00,74,00,68,00,65,00,6d,00,65,00,73,00,5c,00,\
41,00,65,00,72,00,6f,00,5c,00,41,00,65,00,72,00,6f,00,2e,00,6d,00,73,00,73,\
00,74,00,79,00,6c,00,65,00,73,00,00,00
"InstallVisualStyleColor"="NormalColor"
"InstallVisualStyleSize"="NormalSize"
"LastHighContrastTheme"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,\
6f,00,6f,00,74,00,25,00,5c,00,72,00,65,00,73,00,6f,00,75,00,72,00,63,00,65,\
00,73,00,5c,00,45,00,61,00,73,00,65,00,20,00,6f,00,66,00,20,00,41,00,63,00,\
63,00,65,00,73,00,73,00,20,00,54,00,68,00,65,00,6d,00,65,00,73,00,5c,00,68,\
00,63,00,62,00,6c,00,61,00,63,00,6b,00,2e,00,74,00,68,00,65,00,6d,00,65,00,\
00,00
"ThemeChangesDesktopIcons"=dword:00000001
"ThemeChangesMousePointers"=dword:00000001
"WallpaperSetFromTheme"=dword:00000001
"ColorSetFromTheme"=dword:00000001
"CurrentTheme"="X:\\Windows\\resources\\Themes\\aero.theme"
"SetupVersion"="10"
[HKEY_LOCAL_MACHINE\pe-def\Software\Microsoft\Windows\CurrentVersion\Themes\HighContrast]
"Pre-High Contrast Scheme"="X:\\Windows\\resources\\Themes\\aero.theme"
[HKEY_LOCAL_MACHINE\pe-def\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize]
"ColorPrevalence"=dword:00000000
"EnableTransparency"=dword:00000001
这一个也是Wimbuilder2里面的,名为Themes_RegDefault.reg
,顾名思义管主题的,还有就是把壁纸改成上面2.3食用指南的那个壁纸,修改完后卸载。
用前文的两行命令打包,我都是直接保存成批处理的了
imagex /capture /compress fast /boot %mount% %PE%\media\sources\boot.wim "winpe" "winpe"
MakeWinPEMedia /ISO "%PE%" "%PE%\WinPE_amd64.iso"
vmware测试一下,如图,win11的主题基本出来了,explorer运行正常,但以现在的文件列表(我这个用来演示的pe用的是2.3的文件列表),PE的explorer只能自动以新窗口打开文件夹,此问题后面会修复,包括显示桌面和任务栏等等,现在的explorer效果还是挺不尽人意的。