05
2024
02
10:42:44

自制ADK To Win11PE,加入原生explorer,初步修改注册表(图文1.1万字,很细)

书接上回 全网首发,自制ADK To Win11PE(1)中文+包
我这里用的win11版本是10.0.22621.963(22H2)
pe的制作其实就是文件和注册表的修改加入而已,难谈不上,就是烦
本文讲的就是加入explorer中的文件和注册表操作,可能仅适用于Win11,win10也许适用(11和10的内核一样)



1.权限更改

开始之前请改权限,包括之后的注册表都一样要改权限,防止遇到各种拒绝访问的情况。以%PE%的目录WinPE_amd64为例,右键-属性-安全-高级
权限
修改权限总步骤如下,这个是最全面最管用的步骤:
权限改完

1.1更改所有者为当前用户

点击所有者旁边蓝色的更改,然后直接看图操作,选择这个只有一个小人的Administrator(你当前用户名)
所有者

1.2替换子容器所有者

确定完回到总步骤的那个窗口,勾上替换子容器和对象的所有者

1.3继承

勾选使用可从此对象继承的权限项目替换所有子对象的权限项目

1.4添加当前用户权限

点击添加,选择主体,勾选完全控制,看下图
权限添加
最后按改完图中的确定就行,弹出来的窗口点是就行
确定

1.5补充

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里面,因为后面用的比较多

2.文件加入

文件加入有三种可以学习的办法,淦出来的列表中文件能不替换还是尽量别替换,具体看文中阐述。每一个方法都有自己的特点,都值得学习。

2.1 tasklist

tasklist命令可以准确分析出进程运行时所用的DLL文件,可以用于分析explorer.exe的依赖,但有些dll分析出来如系统核心的ntdll.dll这种不替换也是亲测可运行的。

2.1.1 获取文件列表并去重

PS:进行下列操作前请将下面出现的第一条命令复制好,因为浏览器会关掉(我的是Chrome)建议先看完这一节再操作
Ctrl+Shift+Esc打开任务管理器,先点击左上角文件-运行新任务,输入cmd,勾选以系统管理权限创建此任务,粘贴但不运行以下命令:

explorer.exe | tasklist /M /FI "ImageName eq explorer.exe" /FO LIST

cmd
接着点详细信息,选择explorer.exe,结束进程树
任务管理器
PS:除了任务管理器的大部分东西都会关掉,画面有部分全白,这里截不了图,看文字
运行刚刚粘贴的命令,这个是开启explorer的同时使用tasklist看explorer的依赖,文件就会自己出来(doge)
tasklist
等到运行的命令不动的时候(很快就可以出来的了),将输出的"模块:"后面的文件名都复制到一个文本文档里面,我这里起的名字是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。
bcompare

2.2 Dependency Walker

软件也是一个分析依赖的好手,但最烦的就是要逐级展开一个个文件细看,再去bcompare4搜索,效率不如tasklist,还有一个最大的问题是这里的DLL套DLL的引用重复率较高,也就是说你还要靠脑子来记住哪个dll复制过了。除了左边的展开栏,其他的东西全都不用看,只看文件名就行,没啥好讲的(很全面,但就是太全面了)。
depends

depends

2.3 借鉴前人的文件列表(推荐小白!)

文件列表不是万能的,但是做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 > 17000cdp.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 >= 18885CoreMessaging.dll,CoreUIComponents.dll,rmclient.dll,twinapi.appcore.dll,InputHost.dll,TextInputFramework.dll

WindowManagement.dll
WindowManagementAPI.dll
Windows.UI.dll

+ver >= 20150dmenrollengine.dll

+ver >= 22000windowsudk.shellcommon.dll

+ver >= 22610Windows.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 > 18950GameInput.dll
+ver >= 22000wuceffects.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了)。

3.注册表修改

3.1 备份注册表的后路

想必小伙伴都等不及了吧,现在先将在D:\WinPE_amd64文件夹下新建2个文件夹,一个叫原Win11,一个叫原pe,备份一下两个系统的注册表新建文件夹
在两个文件夹下分别放入两个系统\Windows\System32\config下的DEFAULT,DRIVERS,SOFTWARE,SYSTEM四个配置单元
复制
复制完成后将原win11\SOFTWARE直接替换掉%mount%\Windows\System32\config下的配置单元,下面就是以官方的Win11注册表为底,然后导入PE的注册表,确保PE的注册表正常运行,又具有Win11的功能。

3.2 正式操作SOFTWARE

现在先把PE的注册表导出去再说,管理员身份运行regedit,先点击HKEY_LOCAL_MACHINE
HKLM
然后文件-加载配置单元,
加载
选择3.1导出的原pe\SOFTWARE,确定后命名为pe-soft,操作Win11的SOFTWARE时也要取同样的名字,不然就导了个寂寞。

导入
pe-soft

跟复制文件的时候一样,操作注册表也要改权限,右键pe-soft,选择权限,和复制文件时一样的操作,先改所有者,继承,再添加完全控制,不再赘述。
关掉regedit,管理员身份运行Registry Workshop,没有的自己下(PS:很重要的一点!!在卸载配置单元的时候不能 regedit和workshop 两个一起打开,不然会直接提示拒绝访问,只能关掉一个去另一个卸载配置单元。有时workshop操作完之后直接卸载也是拒绝访问,这个是它自身的问题,只能关了重开再去卸载,或者关了打开regedit卸载)
然后点击pe-soft,Ctrl+F查找C:\D:\,全部替换成X:\(大写X)(查找的配置如图)
搜索
找到之后Ctrl+A全选,右键替换
替换
替换
注意,workshop每次只能搜索1000个结果,结果数字是1000就要多搜几下D
搜完之后搜Interactive User,全部替换成空(不是删除,删除后explorer打不开)
替换Interactive User
PS:搜索Interactive User的时候有时会出现这两个二进制的注册表项,这两个东东替换不了的不用管它
二进制然后搜一下$Windows.~BT\,有的话替换成空,没有就不管了(win11好像是没有这个东西了)选择pe-soft,文件-导出,随便起一个名字,记得住就行导出
卸载PE的software,加载PE刚替换进去的Win11software,有任何更改都可以直接保存到PE系统里面了。
先改权限,然后跟操作原PE的注册表一样,搜索替换,修改完成后双击导入pe-softinit.reg,然后直接卸载pe-soft。

3.3 简单操作DEFAULT

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食用指南的那个壁纸,修改完后卸载。

4.打包测试

用前文的两行命令打包,我都是直接保存成批处理的了

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效果还是挺不尽人意的。vmware




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/5099.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: