【第一方定制封装部署Windows系统2023】

教程有点长,给自己腾出时间,做杯咖啡,好好看吧!
视频教程,建议一起观看:https://www.bilibili.com/video/BV1YM4y1f7YQ/?share_source=copy_web&vd_source=7ab729973e4a15f312d988cd75dfe561
附属包:https://share.weiyun.com/IabLz8Ua
目录:
一:准备工具/文件,定制系统,封装系统
二:成果测试对比和各种部署方案
三:结束语
-----------------------------前言-------------------------------
在网上看了各种各样教程后,发现大家都在使用第三方工具来对Windows进行定制,和美化之类。虽然方便,但这样能真正学习到东西吗?我,决定来做这样一个教程,绝大部分内容使用第一方软件和方案,保持安全和清爽。
给新手:定制Windows不是必须要做的事情,对于需要批量,调整和管理系统的IT工作者来说,用的好就能省大量时间精力。个人用户可能就个性化了吧……
给爱好者:
各位是不是每次装完系统都要调整各种设置呢?对于喜欢折腾的我来说,也许该定制一个系统了。还能增加个性化元素和软件,这篇教程会解释大部分内容,如果你是新手,希望你也能看懂吧。
----------------------------通用解释----------------------------
虚拟磁盘/硬盘:系统模拟的一个硬盘,灵活性极高。
部署:通过安装程序把系统安装到电脑上的过程。
ISO文件(.ISO):本教程特指含Windows安装程序和Windows系统本身的一个文件,里面内容复制(刻录)到USB储存器或光盘上来安装Windows,当然你想放什么进去都行。
Windows镜像:Windows压缩文件本身,后缀是.wim,也有压缩度更大但不能挂载的.esd,修改时用wim,最终成果用esd好了,镜像里可包含多种Windows版本,通常对镜像操作时会添加“index”参数,来指定里面包含的特定镜像。
定制:对系统在【最终安装给客户使用前】进行调整的过程,而封装我是这样理解:把调整好的Windows系统重新压缩回可以使用的WIM/ESD镜像。
原始化:把已经安装并启动的操作系统恢复到未安装启动状态(不是100%复原)
虚拟机:在现有操作系统里再模拟一个电脑硬件环境,来安装系统里面的系统,这里主要用来进行第二阶段调整,通常作为企业/服务器/测试环境必用的一种功能。
XX包:通常包含更新,软件和驱动的一种文件。
Windows版本: LTSC=长期支持通道(Long Term Servicing Channel), IoT=物联网(Internet of Things), Enterprise和Server就是企业版和服务器版了,当然你们最熟悉的还是专业版。
WinSxS:是Win镜像里占几GB的大文件夹,是Windows系统的“资源库”,里面几乎什么都有,但有些和【不在WinSxS里面的文件】重复了,并且包含不必要的组件,手动缩减大小效率较低(也非常容易误删除)。
挂载/装载:使未装载的硬盘/虚拟硬盘/文件可以访问。
UEFI启动的硬盘分区要求:
整块硬盘以GPT格式初始化,System是格式化为FAT32的EFI启动分区,大小是256MB左右,MSR为空(16MB),Windows是装系统的分区(NTFS格式),Recovery是恢复分区(NTFS,至少300MB)。实际使用时可以不创建MSR和恢复分区。如果不是UEFI启动,则硬盘底层为MBR,不需要EFI分区,全部格式化为NTFS格式。(BIOS启动已经过时,不推荐使用)

MBR+BIOS要求:不介绍了,老了。如果你电脑不支持UEFI启动,那就用Win7吧。
这次会使用的大部分文件和工具资料都来自微软官方,为什么我不想用主流第三方像NTLite,Dism++这样的软件呢?因为我发现个别软件会在镜像里留下痕迹(MSMG Toolkit),Dism++纯粹是有点老了,NTLite最烦,给的选项太多,一不小心就会中陷阱:超出需求的深度个性化。更别说其他更加花里胡哨的“下崽”软件了。
----------------------------分割线------------------------------
开始前你需要准备以下硬件和软件:(国内可能被Wall)
1. 一台装有Windows 64位版本和固态硬盘(SSD)的电脑,推荐预留40GB的硬盘空间,不建议Win7。 12年前带有酷睿的笔记本加上固态也好。
2. Windows ADK https://learn.microsoft.com/en-us/windows-hardware/get-started/adk-install
3. Windows PE Addon(链接和ADK在一起)
4. 一个你想要定制的Win8.1~Win11 (获取方式包含在教程中)
5. 最高权限或NSudo:https://github.com/AveYo/LeanAndMean
https://github.com/M2TeamArchived/NSudo/releases
6. Powershell 7(不必)https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.3
7. 驱动,更新/补丁包,软件(不必)https://catalog.update.microsoft.com/Home.aspx
8. Virtualbox(不必)https://www.virtualbox.org/wiki/Downloads
9. Visual Studio Code(不必)https://code.visualstudio.com/download
10. 教程附属工具/文件/脚本(不必)https://github.com/HerryYao/Windows-Herry-Project
11. WinDirStat(不必)https://windirstat.net/download.html
12. NTLite(不必)https://www.ntlite.com/download/
13. 7Zip:https://www.7-zip.org/download.html
14. ResourceHacker:http://www.angusj.com/resourcehacker/
所有操作开始之前,在硬盘上创建一个存放各种文件的工作区,拥有良好整理习惯是很重要的,我推荐使用虚拟磁盘当工作区,因为有动态扩展特性,而且还能给他分配盘符。
创建硬盘需要打开磁盘管理,右击Windows图标就能打开了,或者Win+R然后输入compmgmt.msc,在左边找到磁盘管理,右边新建动态扩展的VHDX磁盘,大小推荐25GB以上,创建后需要初始化和创建新分区,推荐用GPT分区类型,格式化为NTFS,否则不能挂载WIM镜像,随便分配一个盘符。如果要断开连接是在左边磁盘图标上点右键操作。
比如我就直接创建一个T盘来当作工作虚拟硬盘。里面分别创建名为wim,mt,iso,txt,app之类的文件夹,分别用来存放wim镜像,挂载点,解压后的iso文件,文本,软件等等...
----------------------------注意了------------------------------
a)建议大家把自己系统修改内容做成列表记下来,方便在有需要时查看。
b)在第二阶段前后考虑备份。
c)我在这次教程里修改的地方都会列出来,存在changes.txt。
d)资源管理器里面建议开启显示隐藏,受保护的文件和文件后缀。
e)这里只会教轻度个性化,包括颜色,壁纸,主题,图标等。
f)在控制中心开启高性能模式,使用DISM速度会快一倍。
g)微软网站可以切换为中文。
h)虚拟机需要在BIOS开启虚拟化和超线程(否则需要第二台电脑或本机)
i)如果遇到网络问题,把网卡属性里面最后一项Hyper-V有关功能禁用。
j)VHDX虚拟磁盘不能被实时共享,虚拟机用的时候系统不能访问,系统用的时候虚拟机不能访问,需要先断开连接再给另一个环境使用。
k)建议事先启用虚拟机,因为要重启电脑一次(详情往下翻)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
l)VirtualBox需要系统启用Hypervisor Platform。
权限环境设置:
定制系统几乎所有操作都使用管理员,而且还不够,(废弃)这就要请出NSudo了,可以让软件在System或者TrustedInstaller下启动,操作不会再有阻碍。对于文件或文件夹我推荐使用一个很简单的注册表添加,双击导入后,直接取得任意文件夹的所有权(不要把整个系统都取得权限),包含在教程附属包。(/废弃)
新版权限设置:双击RunAsTI.reg文件导入,现在你就能右键使用系统或者TI跑任何程序了,包括以最高权限打开Explorer。
针对轻度美化的文件准备(不是必须):(看下面的获取镜像和挂载教程)
1.创建一个放在Windows里的文件夹:
放在Windows下是为了方便使用%WinDir%指定路径,比如我就把自己的壁纸,软件,README和主题之类的放Web里面,在第三阶段时指派新路径。
2.数张合适大小的壁纸:
Windows可能不接受分辨率很高的图片,我不知道为什么,一般来说6K就足够了。而如果要替换安装器里面的壁纸,那最好使用1024x768或800x600大小的24比特bmp格式图片。
3.从镜像里提取的链接库文件:
用7zip直接打开镜像,在Windows\System32下复制imageres.dll(.mun)/shell32.dll(.mun)出来。从1903版本往上则是在Windows\SystemResources里的对应.mun文件。从ISO文件里的sources下拷贝出boot.wim和spiwzimg.dll。ResourceHacker打开dll类文件,点击左边的IconGroup,先把Win11的对应IconGroup保存为.res文件,

再把Win10对应IconGroup号换成Win11的,就这样重复n次,Win10的大部分图标就都会换新啦(教程附属包里有Server2022成品)。挂载boot.wim,把Windows\System32下的setup.bmp换成对应分辨率和格式的照片,把sources里面的background也换了,spiwizimg是把bitmap的最后一项:Bitmap517换成一张1024x768大小的bmp图片。保存回收。
4.八位数的HEX颜色码(ARGB):
这个颜色码可以换主题颜色,比如C40078D7(默认蓝),00000000(黑),FF2D50B4(紫蓝),FF001940(深蓝),在https://learn.microsoft.com/en-us/visualstudio/extensibility/ux-guidelines/color-value-reference-for-visual-studio?view=vs-2022上可以找到一些。在应答文件中,需要在HEX颜色前加上0x。
你想定制镜像?可惜Windows 7系列不支持UEFI和缺少各种现代硬件驱动,我不建议使用了。最低的推荐版本是Windows Server 2012 R2,延长支持到2026年,Windows Server 2022主流支持到2026,Windows 10 IoT Enterprise LTSC 2021延长支持到2032年(链接https://dl.bobpony.com/windows/10/)

每个版本的优势都不同,企业版LTSC没有乱七八糟的软件,还你了清净和一些额外高级功能,服务器版对于软件和驱动的会有兼容上的问题,但是功能最强大,最安全,最稳定,最干净,其中数据中心版推荐临售价6155美元。
你不能直接从官网免费下载Windows服务器正式版和企业正式版,幸好微软也给了我们留了几条后路,服务器试用版只要输入一条指令就能转到正式版,而企业正式版也是通过对官方下载工具输入一条指令就能得到,但不能转LTSC,我就老实用服务器版吧。
服务器试用版获取方法:
----------------------------阶段一------------------------------
从官网下载ISO文件(https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2022),需要填信息时随机填写,

上一页往下翻还提供其他版本下载。

企业正式版获取方法:从官网下载MediaCreationTool(https://www.microsoft.com/en-us/software-download/windows10)下完后进入所在文件夹,在窗口左上角的文件上点一下然后选打开Powershell。

在Powershell里输入cmd,按回车,然后
MediaCreationTool22H2.exe /Eula Accept /Retail /MediaArch x64 /MediaLangCode en-US /MediaEdition Enterprise
(注意看文件名,最前面的改成你下载的版本)这样就能让下载器启动并且下载企业版了。下载器会提示要输入密钥,去微软官方KMS密钥网站获取Windows企业版的就行了https://learn.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys

注意这类KMS密钥不能激活系统,只能用来安装上去,不过也非常好用就是了,下一步选择创建ISO文件和选择一个保存的路径就能等它慢慢下载啦!

----------------------------分割线------------------------------
关于服务器版的升级现在还不着急,先把你下载的镜像双击挂载,或者右键再选择挂载,挂载后系统会分配相应的盘符。(本教程我使用Server2022,因为服务器版的特性,需要特意优化的地方会少一些)
把挂载目录的sources\install.wim留下,其他所有内容原封不动的复制到ISO工作文件夹里。(可手动也可自动)

接着把在iso文件里install.wim的特定Windows版本导出,打开命令行(Windows Powershell,Powershell,CMD都行,只不过这个教程我用的基本都是Powershell(简称PWSH)命令,对应的CMD命令你一查就有)。
先用命令查看你要导出的镜像编号:DISM /Get-WimInfo /WimFile:"X:\X.wim"
再导出:
Export-WindowsImage -SourceImagePath X:\X.wim -SourceIndex X -DestinationImagePath X:\X.wim -CompressionType Max
其中X都是对应你的文件路径和名字,需要自行修改(如果ISO里面包含的是esd,那么把导出源的wim换成esd)。-SourceImagePath后面输入挂载后ISO文件里面的wim镜像路径,-SourceIndex跟着你要导出的Windows版本编号,如果要服务器数据中心带桌面服务,那就写4,而如果是刚才上面的企业版需要输入3。
-DestinationImagePath后面是你要导出保存的路径和名称,比如我要保存为T:\wim\install.wim,输入完后等待一会就应该导出成功了。


轻松导出,可以用7zip快捷查看内容。
小技巧:在桌面环境中,可以直接把文件拖到命令行窗口里,会自动填充路径,再使用左右键来调整输入位置,命令行软件完成某操作后,会显示下一个路径窗口,如果没显示,那就是没完成,不要关闭窗口,下面的第二个PS C:\Users\Administrator>就是操作完成的意思,如果某操作迟迟未更新进度,可能是没刷新,按几下键盘提醒Powershell该动一下啦!(上下两张图是同一个操作)

导出成功后需要挂载wim来进行修改,不要使用解压的方式,挂载点必须是空文件夹,输入命令然后Enter执行:(命令行中大小写无所谓,双引号在文件路径有空格时是需要加的)
Mount-WindowsImage -ImagePath "X:\X.wim" -Index X -Path "X:\X"
我的话就把刚才导出的镜像挂载到T:\mt下(这里index选1,因为刚才已经把一个特定版本导出来了)(底下截图能看到挂载好的系统文件)

注意这个挂载点不要乱放东西进去或者乱删东西。
下载了试用版Windows服务器版的话现在就能升级了,直接输入以下指令搞定:
Set-WindowsEdition -Path "X:\X" -Edition "ServerDatacenter"
ServerDatacenter只是升级到数据中心版,使用Dism /Image:X:\X /Get-TargetEditions检查你的镜像能升级到哪个版本。
然后把最新的系统更新/补丁添加进去,为了修复潜在BUG和安全性问题。获取更新的方式应该去我上面提供的微软官网下载,搜索你的Windows版本加上Cumulative或者SSU,基本就能找到了,记得下载最新和正确架构,版本的更新包。

Windows本地更新包分为LCU和SSU,我们添加更新时先添加SSU然后再LCU(LCU是Cumulative,体积更大),在每个添加更新操作前后,使用清理WINSXS的命令给挂载后的镜像“过”一遍:
Dism /Image:X:\X /Cleanup-Image /StartComponentCleanup /ResetBase
目的是为了减小报错概率,如果不幸报错,就用这条万能命令再过一遍后重复失败操作。添加.MSU更新包的命令:
Add-WindowsPackage -Path "X:\X" -PackagePath "X:\X.msu" -PreventPending

添加LCU很慢,完成后再过一遍万能指令,让系统整理WinSxS。
现在你可以选择来缩减镜像的体积,俗称精简:删除不会造成系统崩溃或者重要功能损失的文件,比如说EDGE浏览器,WinRE恢复环境,语言检查,Windows Defender等。如果你想精简windows(不推荐给新手),那么不用第三方软件会比较费时间,你不知道什么文件可以删,精简过后的Windows一定是不完整的。
你还是坚持的话,下载一个叫WinDirStat的工具,它会把文件夹里的文件占据空间图形化,让人直观的看到哪些组件最占空间,删除之前一定要查一下,不然系统容易崩。批量删除系统文件需要软件/脚本/注册表修改的辅助,在教程附属包有。还可以配合windows自带搜索功能,要删特定语言有关的文件就很方便,例如zh-tw,en-uk。(WinDirState也能在第三阶段时使用)

手动翻查Windows文件的话,从不需要的大组件开始,像文字转语音,额外字体,WinRE.WIM,都能删掉。微软官方也提供了命令用来移除一些组件。
查看镜像中的组件:Get-WindowsCapability -Path "X:\X"
移除镜像中存在并不需要的:Remove-WindowsCapability -Name "X" -Path "X:\X"
(-Name后面写你要移除的组件名)
移除镜像中安装的包,不会缩小体积,不推荐:Remove-WindowsPackage -Path "X:\X" -PackageName "X"
如果用第三方软件就方便了,刷刷几秒就给你列出一个可以删除的组件和列表,像NTLite是好用,但是你自己看吧,极限精简版网上有,不需要你操心。
Edge路径:"Program Files (x86)\Microsoft"
WinRE路径:"Windows\System32\Recovery\Winre.wim"
Speech路径: "Windows\Speech"和"Windows\Speech_OneCore"
(删除System32下的speech会导致桌面搜索不可用)
如果你要彻底删除Edge,应该用NSudo打开的Powershell执行这条指令:
Get-Childitem -Recurse -Path X:\X -include *microsoft*edge*, *microsoft*edge*.* | Remove-Item -Force -Recurse
看起来可以删但是不能乱删的大文件夹例子:
Windows\assembly, SystemResources, Microsoft.NET
System32\CatRoot, Speech, Speech_OneCore
WinSxS\Backup, Catalog
----------------------------分割线------------------------------
接着你看要不要预先载入APPX形式的软件,这些软件大部分都在微软商店不能直接下载,下载教程:https://woshub.com/how-to-download-appx-installation-file-for-any-windows-store-app/,教程中提到的网站链接:https://store.rg-adguard.net/
比如我没啥需求,只需要Windows Terminal就行(但是不支持1809或更老版本),微软官方github上https://github.com/microsoft/terminal,直接能下载appx软件包。
Add-AppxProvisionedPackage -Path X:\X -PackagePath X:\X.appx -DependencyPackagePath X:\X.appx -LicensePath X:\X.xml
这个命令除了需要输入包路径,还需要输入许可证和附属包路径,添加完后还需要修改注册表,让系统允许侧载认证过的软件。

添加Windows Terminal在我制作教程时给我带来了很多困扰,因为没有一次能成功,如果安装失败,sysprep会报错,需要删除。而你们呢先在本机系统上测试ok后再进行操作。
添加普通软件就不是现在了,先把各种离线安装包复制到工作虚拟磁盘里,比如添加一个你喜欢的浏览器,环境,工具等,非常实用,体积小的软件,待会二次调整时添加虚拟磁盘给虚拟机访问。如果你只添加几个软件,那完全可以先把软件放在挂载的WIM里面,待会直接安装。
作为第一次调整的部分,下一步是修改注册表。打开注册表编辑器(Win + R输入regedit),点击HKEY_LOCAL_MACHINE(有时会不同),从左上角的按钮点击加载“集”

找到刚才挂载路径里Windows\System32\Config里面的文件,我要调整的设置包含在SOFTWARE里面,选中加载,随便起个名字,比如s,开始编辑。
任务栏小按钮:HKEY_LOCAL_MACHINE\加载名\Microsoft\Windows\CurrentEdition\Explorer\Advanced
TaskbarSmallIcons 1
(找到并点击Advanced列表,在右边名字里面空白处点击右键,创建DWORD值,叫TaskbarSmallIcons,并修改里面的值为1。一般来说1是启用,0是禁用)

更多例子:
桌面显示这台电脑图标:HKEY_LOCAL_MACHINE\加载名\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel
20D04FE0-3AEA-1069-A2D8-08002B30309D 0
(这里不需要创建新的名字,只需要把上面的改成0就行)
任务栏更透明:HKEY_LOCAL_MACHINE\加载名\Microsoft\Windows\CurrentVersion\Explorer\Advanced
UseOLEDTaskbarTransparency 1
信任软件,开启Dev模式:HKEY_LOCAL_MACHINE\加载名\Microsoft\Windows\CurrentVersion\AppModelUnlock
AllowAllTrustedApps 1 (如果添加了appx的话,需要启用)
AllowDevelopmentWithoutDevLicense 1(如果添加了appx的话,需要启用)
禁用小娜:HKEY_LOCAL_MACHINE\加载名\Policies\Microsoft\Windows\Windows Search
AllowCortana 0
经典照片管理器:HKEY_LOCAL_MACHINE\加载名\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations
".jpg"="PhotoViewer.FileAssoc.Tiff"
".png"="PhotoViewer.FileAssoc.Tiff"
".jpeg"="PhotoViewer.FileAssoc.Tiff"
".bmp"="PhotoViewer.FileAssoc.Tiff"
".ico"="PhotoViewer.FileAssoc.Tiff"
".gif"="PhotoViewer.FileAssoc.Tiff"
(这里是string而不是DWORD值)

注册表这个东西几乎可以修改Windows所有的设置和行为,包括你能想到和你想不到的,比如把Windows 11开始菜单和任务栏改回Win10的样子,大部分可以通过修改注册表来实现。也可以启用各种隐藏功能,你只要想改,自己网上搜索对应的数值去修改就行了。
微软也提供了教程用来修改各种设置,比如调整任务栏图标,开始菜单图标,OOBE体验,电源设置等。https://learn.microsoft.com/en-us/windows-hardware/customize/
我呢就把修改后的imagres.dll.mun和shell32.dll.mun放到相应位置了,待会启动就能看到新图标了。
关于驱动,先考虑你会不会给大量相同配置的机器部署,要不然就没必要了。添加命令:Dism /Image:X:\X /Add-Driver /Driver:X:\X.inf
整个驱动文件夹:Dism /Image:X:\X /Add-Driver /Driver:X:\X /Recurse
更详细教程:https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/add-and-remove-drivers-to-an-offline-windows-image?view=windows-11
----------------------------分割线------------------------------
上面第一阶段的调整做好之后把镜像收回:
Dismount-WindowsImage -Path "X:\X" -Save
命令最后一条-Save是确认修改,如果要取消,使用-Discard来复原挂载前的样子。(注意!收回前把所有正在访问挂载路径的程序关闭,重启explorer,不要打开窗口)等待完成后,把已经收回的镜像复制到ISO文件里面的sources文件夹下,并改名为install.wim。如果报错说不能完全收回wim,先用-save再用-discard过一次,后用7zip快速查看刚才修改的东西有没有保存。
如果要个性化安装器背景,用1024x768大小的bmp图片把sources里面background_svr.bmp换掉,注意名字必须要一样,再把最初准备的boot.wim和spiwizimg.dll替换进去。教程开头修改了boot.wim里面的背景,我不知道到底哪个版本换哪边的背景好使,建议都换,效果图:

如果有的话,把sources里EL.cfg和pid.txt删掉。修改完后使用Windows PE Addon里面自带的工具来制作成可启动的ISO安装镜像。先安装WinPE Addon,再进入C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64,把Oscdimg文件夹拷贝到临时工作文件夹里。在文件夹里像之前那样左上角打开Powershell,输入CMD回车,再输入:
Oscdimg -u2 -befisys.bin X:\X X:\X.ISO
X:\X是要抓取制作的路径,X:\X.ISO是指定制作完的ISO的保存路径,如果打算挂载工作磁盘,则把要启动的ISO存在其他地方。

ISO制作完后准备虚拟机安装。对于使用Windows Server 2012或更新版本的你们,去控制中心》程序》开启或关闭Windows功能,在Hyper-V前面打勾启用安装再重启,这样就能使用Windows自带的虚拟机管理器了。(服务器版则是从服务器管理器添加功能的地方启用)或者在Powershell管理员输入:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All


而对于家庭版或者老版本,从Virtual Box官网下载另一款由Oracle提供的免费虚拟机管理器即可,安装虚拟机步骤类似,只不过选择使用vhd硬盘。或者以管理员运行教程附属包内的HomeHyper.bat。不推荐Vmware Workstation,因为免费试用后需要购买。虚拟机管理器安装完后搜索Hyper-V打开。


左边选中自己电脑后在最右边添加新虚拟机

写个名字,选二代版本支持UEFI,而磁盘储存位置不要放在虚拟磁盘里。

虚拟机创建完成后在中间的列表会显示刚才你命名的虚拟机,右键打开设置,把CPU核心分配至少调整为2,只分配一个线程的话太慢了。内存至少600mb,我的习惯是关闭安全启动,不连接网卡,关闭所有内置服务,关闭检查点,Hyper-V设置里关闭加强的连接服务。



最后点击SCSI控制器,添加DVD光盘,选择刚才制作好的ISO并点击确定保存。

确定所有设置妥当后右键点击虚拟机连接并启动。(启动虚拟机时按任意键启动ISO)


如果安装背景没有像你预期的那样工作,那可能是图片有问题,自己Debug吧。
在安装界面像正常Windows安装一样,跟着提示走。

在这点击下一步,开始安装Windows并以UEFI启动。
----------------------------阶段二------------------------------
系统进到OOBE(用户体验设置)时按Ctrl+Shift+F3重启到Audit(审核)模式,Hyper-V可能有重启BUG,如果迟迟未重启,那就手动操作。

到桌面后会跳出sysprep的弹窗。这是系统自带的原始化工具,使用后会让Windows回到“未部署状态”,留着不要关。(工具路径:Windows\System32\Sysprep)(在审核模式下可以重启系统没关系)

在Audit模式下我们可以综合个性化,调整综合设置,包括但不限于注册表,组策略编辑器,高级系统设置,软件和运行库安装,服务优化,自启动项目,开启Windows功能。
在本机磁盘管理里断开工作虚拟磁盘连接,Hyper-V管理器里添加工作虚拟磁盘,在虚拟机里分配一个盘符挂载就能够访问了。注意如果虚拟磁盘里有挂载的WIM,不要断开虚拟磁盘连接,先收回WIM再操作。
不推荐:如果你现在添加已签名的APPX包:Add-AppxPackage -Path "X:\X.msix"(Windows Terminal还需要VClib UWP Desktop才能使用)
(废弃)注册表例子:
关闭Windows Defender:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender
DisableAntiSpyware 1 (服务器版可以直接在管理器里移除)
高清晰度桌面壁纸:HKEY_CURRENT_USER\Control Panel\Desktop
JPEGImportQuality 64
资源管理器显示隐藏文件,后缀:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Hidden 1
ShowSuperHidden 1
HideFileExt 0 (/废弃)
组策略编辑器例子:
Win+R输入gpedit.msc打开。
更改Windows更新下载:Computer Configuration\Administrative Templates\Windows Components\Delivery Optimization\Download Mode
(启用里面的设置,把选项调整为bypass(100))
禁用复杂密码或启用:Computer Configuration\Windows Setting\Security Settings\Account Policies\Password Policy\Password must meet complexity requirements
改为禁用(不需要复杂密码),启用(需要复杂密码,安全性更高)

启用或禁用CTRL+ALT+DEL:Computer Configuration\Windows Setting\Security Settings\Local Policies\Security Options
Interactive logon: Do not require CTRL+ALT+DEL
(禁用,需要ctrl+alt+del登录。启用,不需要,键盘上没有delete的可以开启)
禁用服务例子:(Win+R打开services.msc)
SysMain, Connected User Experience and Telemetry, GeolocationService, Shell Hardware Detection

虽然我还可以禁用一些其他服务,但可能会影响正常使用。
其他例子:关闭内存缓存(高级系统设置里)或者启用关机清理内存缓存,要不然到时候封装时可能会把内存缓存也加进去了,关闭休眠指令:powercfg /h off

使用高性能模式和在桌面放快捷方式类似的“单用户设置”是不会被sysprep保存的。如果要改,使用gpedit或者regedit修改关于电脑设置的会更好。调整完毕后确保系统内(C盘)不留着软件安装包,无用文件等(也不要把软件装在在除C盘的地方)。壁纸,主题个性化我们在sysprep后做。
----------------------------分割线------------------------------
Sysprep前用Disk Cleanup和Dism清理垃圾文件:
Powershell输入:Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
Disk Cleanup工具: Win+R输入cleanmgr.exe,给所有项目打勾清理。
删除Windows\Temp下和删除Win+R,%Temp%下的临时文件。
确认一切OK后在sysprep里选择关机,给通用(Generalize)前面打勾,点击OK,sysprep完成后系统会自动关机,不要再启动了。如果sysprep失败,可能是因为前面你安装appx错误,删除了关键系统文件导致,先找解决方法,实在不行就重做,别乱删东西。

关闭虚拟机后Win+R输入compmgmt.msc,打开磁盘管理,最右边更多操作里选择连接VHD,你虚拟机的磁盘会在以下路径:(除非你之前改存其他地方了)
C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\
----------------------------阶段三------------------------------
连接虚拟机磁盘后系统会分配一个盘符,接下来是最终调整阶段,这里我们要使用Windows ADK里面的叫Windows System Image Manager(Windows SIM,镜像管理器)的工具来创建应答文件(unattend.xml),系统安装时会根据xml内容来进行很多自动化操作或设置。

这次我会用应答文件来设置壁纸主题,跳过OOBE,禁用CEIP,WER,指定语言等等... 安装Windows ADK里第二个选项。

然后在开始菜单往下滑找到Windows Kits,打开Windows SIM。左边选择镜像,最好用升级后的install.wim,它会提示创建CLG文件。

等创建完之后在右边的应答区块右键创建一个新xml。回到加载好的Windows组件列表里,找到要调整的组件,添加到xml里面的各种阶段后再设置值。微软官方的组件设置选项介绍:
https://learn.microsoft.com/en-us/windows-hardware/customize/desktop/unattend/components-b-unattend
教程:https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/update-windows-settings-and-scripts-create-your-own-answer-file-sxs?view=windows-10

上面是我所有添加的内容,如果安装时出错,下载我的对比一下。
应答文件设置:
1.WinPE:里面的设置是Windows安装文件会读取的,在里面可以加入同意EULA,跳过密钥,清空磁盘创建分区等设置,用来全自动安装Windows。
2.离线维护:这个通常不会用到,只对离线的WIM镜像做出2.里面的更改。
3.通用?:微软也没讲,但是把其他所有能改的设置也都放这里好了。
4.特殊化:应该把最多的设置放在这个阶段,因为系统在OOBE和审核模式之前就会执行。
5.审核系统:微软没说,一般不用。
6.审核用户:里面的设置会在审核模式刚登录后执行。
7.OOBE:在OOBE完成后的设置,请有逻辑的使用。
完成后保存为unattend.xml,在Sysprep后的Windows下,就是刚才挂载的虚拟机硬盘,创建一个叫Panther的文件夹,把unattend.xml放进去(如果已经有了,那就把里面内容删除再放)。如果你在unattend.xml指定了壁纸,那也把提前准备好的壁纸放到你指定的路径,而任务栏快捷键同理。如果你不想在镜像里面加应答文件,那就重命名为autounattend.xml然后放在ISO文件夹的最上层,和setup.exe,bootmgr之类的一起。
----------------------------分割线------------------------------
OKOK,所有内容确定没问题后就把系统封装成WIM吧,命令:
New-WindowsImage -ImagePath "X:\X.wim" -CapturePath "X:\" -Name "X" -CompressionType Max -CheckIntegrity -Description "X"
-ImagePath:保存的路径,-CapturePath:抓取路径,-Name镜像名,-Description:镜像描述。封装后的WIM文件改名为install.wim,如果使用了esd那也是install.esd。
如果要给WIM添加另一个镜像,先把要新添加的镜像挂载,再输入:
Add-WindowsImage -ImagePath "X:\X.wim" -CapturePath "X:\" -name "X"
-ImagePath是被添加的WIM,-CapturePath抓取第二个WIM的路径,添加完成后再收回第二个镜像就行了。*我遇到了问题,这样添加的系统,安装器只能用Index1,不知道为什么,自己查吧。
我们如果要制作UEFI启动的安装U盘的话,需要把大于4GB的wim切割成更小的数个swm文件(因为FAT32不支持单个大于4GB的文件)命令:
Dism /Split-Image /ImageFile:X:\X.wim /SWMFile:X:\X\install.swm /FileSize:3800
切割后的文件和正常install.wim一样都放在sources里。
Windows安装器的内容大部分都不需要,我看AtlasOS把sources文件夹里除了boot.wim, install.esd和setup.exe除外的所有东西都删了,经过我的测试也确实没问题,所以推荐删除。

除了Windows本身,能修改的还有boot.wim,winre.wim。WinRE在系统镜像的Windows\System32\Recovery里。它们都是在官方Windows Preinstall Enviroment(Windows预安装环境,WinPE)上加了几个软件做成的,而WinPE就是Windows的迷你版,通常用来安装和维护系统。其中winre.wim可以和系统一起用上面的方法直接添加LCU更新。
最后再用Oscdimg制作最终ISO文件,就完成了系统的定制封装。
----------------------------分割线------------------------------
目录一终于结束了,接下来开始目录二,测试我们的系统和各种部署教程方案。
像第二阶段调整一样,把系统安装到虚拟机里去测试,如果虚拟机里有系统,安装时把本来的磁盘全清空就行了。安装器内教程:(标准单硬盘)
按Shift + F10,弹出CMD后输入diskpart
sel dis 0
clean(然后继续正常操作)
如果你指定了跳过OOBE和密码,那么安装完后系统会直接显示用户和提示输入密码,进桌面后检查你定制调整的所有东西,能不能用?有没有起效果?如果有些失败了,那就回到目录一从头检查,开始Debug吧。我遇到的问题:任务栏链接失效,推测是我在指定给CMD使用的路径上添加了双引号,已经解决。预先添加的Windows Terminal失败了,暂时无100%有效的办法。
在虚拟机上安装系统你们会了,那么给实体机装系统有很多选择:
1.创建可启动的USB安装盘:(可以使用Rufus制作)
准备一个装得下ISO的U盘,备份好数据,打开CMD,输入:
Diskpart(打开这个软件)
list disk(列出所有硬盘)
select disk X(选择硬盘,X是数字)
clean(清空分区,包括数据)
create partition primary size=32000(MB。创建一个主分区,不能大于32GB)
(1000MB = 1GB = 1000000KB)
format fs=fat32 quick(格式化为FAT32,用于UEFI启动)
assign letter X(分配一个字母挂载点)
再把ISO挂载,里面所有东西复制到U盘里去就能启动了。
2.在电脑一上给硬盘部署系统,再把硬盘装到电脑二上启动:
和1.一样清空硬盘后输入:
cre par efi size=200(创建EFI分区,大小为200mb)
format fs=fat32 quick
ass letter Y(分配挂载点)
cre par pri(用剩下所有空间创建一个主分区)
format fs=ntfs quick
ass letter W(另一个挂载点)
dism /apply-image /imagefile:X:\X.wim /index:X /applydir:W:\
(部署WIM文件到W:\)
bcdboot W:\windows /s Y: /f uefi
(给W下的系统创建启动文件并放在EFI分区(Y:\))
完成后关机,把硬盘拔下来插到另外一台电脑上,使用UEFI启动就行了。对于移动固态硬盘来说同理,并作为WinToGo启动。
3.把系统安装到U盘,作为Windows To Go随时使用:(可以使用Rufus制作)
如果你要安装到速度慢的U盘上,那么系统响应时间大约是10分钟左右。对于没经过微软认证但是性能可以用来做WinToGo的U盘:(至少16GB的空间,4KB读写速度5MB每秒以上)
打开磁盘管理器,清空U盘,创建一个200mb大小的主分区,格式化为FAT32,分配一个盘符,比如Y。再用剩下的空间创建另一个主NTFS分区,分配盘符比如W。在磁盘管理右边点击创建VHD,选择VHDX格式动态扩展,空间最小不能小于系统安装后占的体积,比如16GB,最大不能超过U盘剩余物理空间。保存在刚在分配的W:\,初始化为GPT格式。接着就是和2.一样选中虚拟磁盘,创建EFI分区(X)然后主分区(S)这样,只是盘符不要重复了。给虚拟磁盘里部署系统,给系统在虚拟磁盘的EFI(X)创建启动文件后再输入:
bcdboot S:\windows /s Y: /f uefi(给在虚拟磁盘的Windows所在分区(S)创建启动文件并放在物理的EFI分区(Y))最后再断开虚拟磁盘的连接,就能把U盘拔下来使用了。
这样在U盘上部署的系统有好处,使用了UEFI启动,跳过了微软的U盘分区限制,减少系统报错的概率,平常是U盘接到电脑上启动。因为我们还给虚拟磁盘内也创建启动文件的关系,还能接到电脑上使用虚拟机启动这个虚拟磁盘。
4.使用Windows Deployment Service(WDS)通过网络远程部署系统:

最简单情况:在服务器管理器中启用WDS,重启安装后打开,配置一下,选择你是独立的服务器,选择准备好的boot.wim和install.wim,只要你的电脑连接着网,路由器自带DNS和DHCP功能,确保services.msc里WDS服务启动,就行了。使用另一台电脑通过网线连接路由器,使用PXE启动,会启动到WDS提供的远程安装界面,输入WDS服务器的账号,格式:“IP地址或电脑名\账号名”和密码,就能通过网络安装Windows了。复杂配置:自己查。问题:我主力机的WDS服务死活开不起来,可能是用着共享网络的原因,我不知道,反正不行,而我的笔记本上可以使用。
定制的系统到底咋样?
我们来成果测试和对比吧,这次我找来了其他三位选手,有请雨林木风Win10,Tiny11_b2 by NTDEV,AtlasOS_20H2。
每台虚拟机分配4GB动态内存,2个CPU线程,关闭所有其他选项设置。虚拟机硬盘均20GB,存放在PCIE3.0 x4 SSD中,而ISO则在第二块硬盘中。
AtlasOS报错,在Hyper-V上不能正常启动安装程序,我换成了VirtualBox,安装慢,但是我把速度慢的锅都扔VB头上,系统稳定后占用大约40+进程,800mb+内存,占用6.75GB的空间,我只能说是用功能换取性能,游戏党确实可以考虑。
雨林木风下载下来发现不是ISO镜像,是带安装程序的GHO,在WinPE里无法启动,删了。
Tiny11最稳定,没啥问题,但是我都懒得进桌面,有Win11的OOBE。
我话的运行速度就不得而知了,稳定下来后100进程左右,1.2GB内存占用。我就禁了几个服务,是Server2022正常水平,体积8.4GB左右。删除NativeImage后的版本更小。
----------------------------分割线------------------------------
目录三:可以定制的还有很多,比如WinPE,在无忧启动论坛上你能找到各种吊炸天的魔改PE,给PE添加Explorer都是最基础的常识了...微软除了前面讲的桌面版,还有像Factory OS, Validation OS, Windows IoT Core, Server Core这样更加简化版的Windows系统。关于系统激活问题,我压根就不想激活也不需要激活,反正就是右下角有个水印而已,其他有什么区别呢?虽然只要在Powershell里输入:
irm https://massgrave.dev/get | iex
这是国外的服务器,提供KMS,KMS38,数字权利激活,不需要下载软件。
Windows 11的UI是在Win10在Win7在Win2000上叠叠乐搞出来的,你去看基于Win11的validation os安装测试就知道了。禁用dwm.exe可以让系统回到Vista的基础主题,而再把SystemResources删除会回到Win2000的经典主题,具体请参考Youtube上的视频。
灵感,感谢:
b站:@化学纤维,@小鱼儿yr系统
YT:@NTDEV,@Craft Computing,@Chtris Titus Tech,@Enderman,@Linus Tech Tips
教程参考资料来源包括但不限于:谷歌,微软,ChatGPT,Youtube,中文论坛
可惜这个教程还不完美。
随机链接:
如果sysprep不能工作:https://appuals.com/fix-a-fatal-error-occurred-while-trying-to-sysprep-the-machine/(Win2012)
移除其中一个WIM index:Remove-WindowsImage -ImagePath "X:\X.wim" -Index X -CheckIntegrity
Notepad++: https://notepad-plus-plus.org/downloads/
Microsoft links: https://learn.microsoft.com/en-us/powershell/module/dism/?view=windowsserver2022-ps
OBS: https://obsproject.com/download
WD SN570: https://www.westerndigital.com/products/internal-drives/wd-blue-sn570-nvme-ssd#WDS250G3B0C
MSDN旧版: https://msdn.itellyou.cn/
申请E5账号: https://www.youtube.com/watch?v=eamiBQpzbrQ
我的YT:https://www.youtube.com/channel/UCsK7ImjsA5xobAEiZW7j9MQ
萝卜头IT论坛:https://bbs.luobotou.org/forum.php
无忧启动PE论坛:http://bbs.wuyou.net/forum.php?mod=forumdisplay&fid=83