自制Win11PE实战:用ADK集成中文语言包与维护工具,生成可启动ISO

自制Win11PE实战:用ADK集成中文语言包与维护工具,生成可启动ISO 用别人封装好的 PE 盘功能再齐全我心里始终悬着一个问题引导环境里跑的东西到底是不是完全可信。磁盘修复、系统备份、分区调整这些操作都是把整台电脑的命脉交出去所以我更愿意要一个自己能完全掌握的环境。后来我直接改用微软官方的 ADK 构建 Win11PE全中文界面把常用的磁盘、备份、硬件检测工具一起打进去整个过程有据可查、可重复制作。这篇文章是这个系列的第一篇先把最具代表性的一条主线讲透从 ADK 安装、WinPE 基础目录生成到中文语言包集成、常用工具包收录再到生成可启动 ISO。如果你也打算做一个自己的维护 U 盘或者公司里需要批量装机、维护 Windows 11 设备这套流程可以直接抄作业。1. 为什么不直接用现成 PEADK 自制 Win11PE 的决策逻辑1.1 第三方 PE 的最大问题不是功能是信任成本市面上的 PE 成品盘用起来确实方便夸克网盘一挂下载解压就能写进 U 盘。但很多 PE 内部到底塞了什么普通用户根本看不全。有的会往引导镜像里挂推广主页有的会在部署系统时偷偷植入驱动级程序还有一些干脆拿用户当肉鸡。技术工作者拿 PE 去给客户修电脑或者在自己主力机上做恢复操作一旦引导镜像里混进了不该有的东西风险比功能缺失更大。自制 PE 最大的意义不在于“功能更强”而在于“过程可控”。从微软官方拿 ADK整个镜像里的每一个包都是自己加进去的每一条命令都知道干了什么。重复构建几次之后你甚至可以写一个构建脚本把一套 PE 环境完全自动化生成。以后不管微软怎么更新你都能基于官方源重新产出一份干净的 Win11PE。1.2 Win11 的启动环境要求绑定新版本 ADKADK 的全称是 Windows Assessment and Deployment Kit按对应系统版本发布。要构建 Win11PE最好使用 Windows 11 对应的 ADK 版本而不是拿几年前的 Win10 ADK 硬凑。原因在于 WinPE 本质上是 Windows 的一个最小化版本它的驱动模型、启动组件、WMI 接口和 PowerShell 支持都会跟着系统迭代。Windows 11 要求 UEFI Secure Boot、TPM 2.0新平台的 NVMe 固态硬盘成为标配这些变化直接落在 WinPE 需要管理的基础硬件上。用老 ADK 生成的 PE面对新设备时很可能出现磁盘控制器驱动缺失或者在 PE 里看不到硬盘更别提后续的系统备份和恢复操作了。所以我建议直接下载最新版 ADK安装后先看一眼版本号确保和你要制作的 Win11 镜像属于同一个大版本周期。版本对齐这件事后面集成语言包的时候会更明显我在第 6 部分会展开讲。1.3 自制 Win11PE 要解决的真实场景我自己做这个 PE 的需求很具体新电脑预装 Win11有时需要进入 PE 重装系统、修改分区、备份引导老机器升级固态硬盘需要在 PE 里做分区对齐和系统迁移同事的电脑进不去系统需要在 PE 里读取数据、修复引导。这些场景要求 PE 必须能从现代硬件启动、能识别 NVMe 和 USB 启动盘、能运行常用维护工具同时界面最好是中文减少误操作。因此这篇系列文章的第一个目标就是把一个带中文界面的 Win11PE 完整跑通并把常用工具放进去。跑通之后后续要增加什么功能都只是往这套基础框架上叠加。2. 装对 ADK 并生成基础 WinPE 目录整个项目的地基2.1 安装时只要不省掉这两个组件从微软官网下载 ADK 安装程序时它默认会弹出一大堆功能组件部署工具、Windows 预安装环境、映像配置设计器、用户状态迁移工具、卷激活管理工具等。大多数人首先会愣一下不知道要勾哪些。对构建 WinPE 来说有两项不能省部署工具里面包含了 DISM、copype、MakeWinPEMedia 这些核心命令行工具。Windows 预安装环境这是 WinPE 组件的本体安装后会生成包含 WinPE 可选组件包和语言包的目录。安装位置建议保持默认也就是C:\Program Files (x86)\Windows Kits\10。后面所有 CAB 包路径都依赖这个目录自己改路径容易在各种脚本里对不上。安装完成后到开始菜单找到“部署和映像工具环境”右键选择以管理员身份运行。后续操作都在这个环境里执行它能保证命令路径和权限都对。2.2 copype 生成目录里各文件的真实用途在管理员命令行里执行copype amd64 C:\Win11PE这个命令会创建一套 WinPE 基础工作目录。注意第一个参数是amd64如果目标电脑都是 64 位选这个就够了x86 版本的 PE 在新硬件上的兼容性反而更差。命令执行完C:\Win11PE下会出现这些关键内容media最终要制作成 ISO 或写入 U 盘的完整文件结构里面包含bootmgr、EFI、boot、sources等目录。mount用于挂载 WIM 镜像的空白目录后续所有修改都通过这里进行。fwfiles固件相关文件主要用于生成启动介质时补齐 UEFI 支持。winpe.wimcopype 生成的基础 WIM 模板。media\sources\boot.wim真正进入启动流程后会加载的系统镜像文件。很容易踩坑的一点是很多人以为修改winpe.wim就行实际上最终制作启动介质读取的是media\sources\boot.wim。所以后续所有针对 PE 系统的修改都要挂载这个文件。2.3 挂载 boot.wim 的细节与回退习惯挂载镜像使用 DISM 命令dism /Mount-Image /ImageFile:C:\Win11PE\media\sources\boot.wim /Index:1 /MountDir:C:\Win11PE\mount/Index:1是因为 WinPE 的 boot.wim 通常只有一个镜像索引不像安装镜像的 install.wim 可能包含多个 Windows 版本。挂载成功后C:\Win11PE\mount目录看起来就是一个完整的 Windows 系统目录树里面能看到Windows、Program Files、Users等文件夹。这里我特别强调一个习惯挂载之前先把boot.wim复制一份到别处比如C:\Win11PE\boot_backup.wim。后面我们改语言包、改启动脚本万一改到一半挂载失败或者提交后发现配置错误还能拿备份文件快速回到初始状态。整个过程全重来一次成本不低多这一条命令能省很多时间。3. 中文语言支持从英文游标机到中文维护环境的验证链条3.1 定位 WinPE_OCs 及 zh-CN 子目录ADK 默认会把 WinPE 的可选组件放在这个路径下C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs这个目录里全是.cab文件每个对应一类可选的 PE 功能。比如WinPE-WMI.cab提供 WMI 基础支持很多硬件检测工具依赖它。WinPE-Scripting.cab提供 VBScript、JScript 脚本支持。WinPE-HTA.cab支持 HTML Application部分第三方 GUI 工具会用到。WinPE-NetFx.cab.NET Framework 支持。WinPE-PowerShell.cabPowerShell 支持。WinPE-StorageWMI.cab存储相关的 WMI 接口。WinPE-Fonts.cab字体文件中文显示成方块基本上都是缺这个的锅。同一目录下还有一个zh-CN子目录里面装的是以上功能包对应的中文语言资源包命名规律就是在原包名后面加_zh-CN比如WinPE-WMI_zh-CN.cab。3.2 按“先功能包后语言包”的顺序添加语言资源添加中文包时原则是先把功能包本体加进去再把对应的中文语言包装进去。道理很好理解功能包是“软件本体”语言包是“界面资源和翻译”先有本体再给本体补中文资源。以 WMI 为例完整命令是这样dism /Image:C:\Win11PE\mount /Add-Package /PackagePath:C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab然后继续执行dism /Image:C:\Win11PE\mount /Add-Package /PackagePath:C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-CN\WinPE-WMI_zh-CN.cab把 WMI、Scripting、HTA、NetFx、PowerShell、StorageWMI、Fonts 这七组功能包和对应中文包都按同样逻辑添加进去。每一条命令执行时都会输出进度有的包比较大需要等几十秒这很正常别急着 CtrlC。有人会问是不是全都要装。如果只是要一个能敲命令、能跑 diskpart 的极简 PE只加 WMI 和字体包也够。但如果后面想做图形菜单、运行现代工具NetFx、PowerShell、HTA 这些最好一次到位省得后面反复重新构建。3.3 设置默认中文环境装完语言包还要让 PE 启动后默认使用中文不然界面可能还是会落到英文。DISM 里有一组和区域、语言相关的参数建议按顺序执行dism /Image:C:\Win11PE\mount /Set-AllIntl:zh-CN这条命令会一次性把镜像是 UI 语言、系统区域、用户区域全部设置为中文。如果这条命令因为某些原因没有生效可以再手动执行一条更明确的dism /Image:C:\Win11PE\mount /Set-UILang:zh-CN输入法布局也要顺手设置一下不然中文环境下键盘布局可能还是美式英语某些工具输入路径时容易出现问题dism /Image:C:\Win11PE\mount /Set-InputLocale:0804:00000804时区默认值也建议设置成中国标准时间后面你会在 PE 里查看日志文件、记录操作时间时区不对很影响判断dism /Image:C:\Win11PE\mount /Set-Timezone:China Standard Time3.4 提交前先做一次“可上机审查”所有语言包都添加之后先别急着提交用两条命令检查状态dism /Image:C:\Win11PE\mount /Get-Packages dism /Image:C:\Win11PE\mount /Get-Intl第一条会列出镜像里所有已安装的包确认每一个需要的中文资源包前面都标着“Install Pending”或“Installed”而不是“Failed”。第二条会显示当前镜像的默认语言看到zh-CN出现在 UI 语言一栏基本就没问题了。这个检查过程看起来多花几分钟实际上能提前拦截掉很多问题。最常见的就是语言包添加失败但你没注意看输出等提交完烧成 ISO 才发现界面还是英文重新构建一轮非常耗时。4. 把常用工具包集成到 Win11PE放哪、启动脚本和兼容性预检4.1 工具包的两种存放模式和选择策略标题里“中文包”里的“包”落到实操层面就是一套维护工具箱。常用的磁盘工具、备份工具、硬件检测工具要怎么放进 PE我试过两种模式。第一种是直接把工具文件复制到挂载目录里提交之后这些文件会进入 boot.wim启动后出现在内存盘 X 盘里。优点是 PE 启动后即使 U 盘被拔掉工具照样能用缺点是这些文件会常驻内存启动时加载的镜像体积也会变大可能让 PE 启动明显变慢。第二种是把工具放在 ISO 或 U 盘的独立目录里PE 启动后用脚本调用外部文件。优点是镜像体积小启动速度快可以塞大体积工具缺点是 PE 运行过程中介质不能断开一旦 U 盘被误拔工具就会失效。我的经验是两种模式混合使用最常用的、体积小的命令行工具放进 boot.wim比如 diskpart 脚本、分区备份脚本、7-Zip 命令行版体积大、偶尔才用的 GUI 工具放在外部目录比如 DiskGenius、AIDA64。这样既能保证 PE 有基础能力又不至于把镜像做得太大。4.2 startnet.cmd 与 init.cmd 的编排WinPE 启动后会默认执行X:\Windows\System32\startnet.cmd文件原始内容基本就是一行wpeinitwpeinit负责初始化网络、存储驱动和即插即用环境是 PE 启动的关键步骤不要把它删掉。我们在它后面追加自己的工具加载逻辑。用文本编辑器打开C:\Win11PE\mount\Windows\System32\startnet.cmd改成这样echo off wpeinit if exist X:\Tools\init.cmd call X:\Tools\init.cmd注意保存时编码尽量用 ANSI 或者 UTF-8 无 BOM避免脚本里因为编码问题多出不可见字符导致执行异常。如果工具放在 ISO 外部目录init.cmd 里可以写相对灵活的逻辑比如echo off echo [Win11PE] Initializing tools... for %%d in (C D E F G) do ( if exist %%d:\Tools\Win11PE_Tools.cab ( echo Found %%d:\Tools\Win11PE_Tools.cab expand %%d:\Tools\Win11PE_Tools.cab -F:* X:\Tools\ goto :loaded ) ) :loaded call X:\Tools\menu.cmd上面这个循环会在各盘符里自动找工具包适合 ISO 和 U 盘盘符不固定的情况。找得到就解压找不到就跳过不影响 PE 使用。4.3 工具在 PE 中跑不起来的三个兼容性雷区往 PE 里放工具最怕的就是东西放进去了启动之后却跑不起来。我踩过几个坑一次性说清楚。第一是 32 位程序问题。现在做的 Win11PE 是 64 位PE 默认对 32 位应用的支持非常有限很多 GUI 工具直接双击没反应。遇到这种情况优先找工具的 64 位版本如果只有 32 位版建议先放弃不要为了一个工具去折腾 WoW64 兼容层既费时间又可能影响 PE 稳定性。第二是运行时依赖缺失。我们在正常 Windows 里用的工具很多依赖 VC 运行库、.NET Framework 或者特定系统组件。PE 里没有这些完整运行时所以尽量选绿色版、静态编译版工具那种需要安装的、依赖一堆 DLL 的工具就别往 PE 里放了。第三是 X 盘是内存盘重启就清空。有些工具会在运行目录写临时文件或者导出结果如果默认路径指向 X 盘PE 一重启所有结果都没了。最好在 init.cmd 里设置一个工作目录或者把输出路径手动指到 U 盘或本地磁盘。5. 生成最终可启动 ISO提交镜像、MakeWinPEMedia 和双介质验证5.1 commit vs discard 一定不能搞混所有修改完成之后执行卸载镜像时有一个关键参数要分清楚dism /Unmount-Image /MountDir:C:\Win11PE\mount /Commit/Commit表示保存所有修改并卸载镜像这是构建完成时的常规选择。如果中途发现改坏了想回到挂载前的状态用/Discard代替/Commit所有改动直接扔掉。提交之前先关闭所有打开着C:\Win11PE\mount目录的文件管理器窗口最好也退出杀毒软件或者索引程序否则卸载可能因为目录被占用而失败。卸载成功后media\sources\boot.wim就已经是包含中文语言包和工具脚本的成品镜像了。5.2 制作用于维护的 ISO 和启动 U 盘生成 ISO 的命令很简单MakeWinPEMedia /ISO C:\Win11PE C:\Win11PE_CN.isoMakeWinPEMedia会自动读取C:\Win11PE\media目录调用 ADK 自带的镜像工具把整个目录打包为可引导 ISO并且同时包含 UEFI 和传统 BIOS 两种引导方式。命令执行完成后C:\Win11PE_CN.iso就是可以刻录或拷贝到 VM 里的成品。如果想直接做 U 盘命令是MakeWinPEMedia /USB C:\Win11PE G:这里G:是你的 U 盘盘符注意 U 盘里的数据会被清空提前备份好重要文件。5.3 虚拟机先过一遍再上真机每次构建完我都会先在 Hyper-V 或者 VMware 里把 ISO 跑一遍确认三件事开机能不能正常进到命令行、中文能不能正常显示、工具脚本是否能按预期执行。Hyper-V 第二代虚拟机默认启用安全启动ADK 生成的 PE 默认就支持 Secure Boot能直接启动。如果虚拟机里看到的是一个命令行窗口而不是报错或者蓝色恢复界面说明 PE 基础启动逻辑没问题。接着执行一下工具脚本看看输出信息是否正常中文字符没有乱码这一版就可以放心拿到真机上测试。真机测试时选一台空闲的电脑或者先把 U 盘插在一台已经做好备份的机器上万一启动失败也不会影响正常工作。6. 这个系列最容易翻车的几个真实案例我已经替你试过6.1 ADK 版本与语言包的“错配”我第一次给 Win11PE 加中文包时图省事直接从机器上另一个旧版 ADK 目录里复制了zh-CN的语言包过来结果 DISM 报错0x800f081e包和镜像版本不匹配。原因很简单不同版本 ADK 生成的功能包和语言包内部版本号必须和 boot.wim 一致。跨大版本混用DISM 会直接拒绝安装。正确做法是先用/Get-Packages看一下当前镜像版本再找到同一版本的 ADK 目录下的 WinPE_OCs 包版本号对不上就别硬装。6.2 挂载目录被占用导致卸载失败有次修改完准备提交DISM 抛出一个“拒绝访问”的错误原因是资源管理器窗口还停在C:\Win11PE\mount目录里。Windows 对挂载目录的占用检测很严格任何进程占用都会导致卸载失败。后来我习惯在提交前执行一遍tasklist | findstr explorer确认文件管理器没有停留在挂载目录再关掉所有杀毒软件、文件索引服务卸载基本一次成功。如果实在卸载失败重启电脑再执行一次/Commit不要直接去删 mount 目录否则镜像文件可能损坏。6.3 中文方块字体不是语言包问题而是字体包缺失有一版 PE 界面已经显示中文但很多中文文字在命令行里变成方块。我一开始以为是语言包没加全反复查了Get-Intl语言设置明明已经是zh-CN。最后定位到问题在字体包。WinPE 的默认字体非常精简不包含完整的 CJK 字形必须额外添加WinPE-Fonts.cab和WinPE-Fonts_zh-CN.cab这两个包。添加后重新提交镜像中文方块的问题彻底消失。这也是我强调功能包要和语言包配对安装的原因字体资源本身也是功能包的一部分光有语言设置没有字体文件一样白搭。6.4 镜像塞太满启动速度和 X 盘空间同时失衡一开始我什么都想往 boot.wim 里塞装了一堆大体积软件结果 PE 启动时间从十几秒被拉长到两三分钟X 盘空间也越来越紧张。X 盘是从内存里划出来的临时盘镜像体积越大占用的内存越多留给工具运行的临时空间就越少。后来我把策略改成“轻装进镜像、重装放外部”仅保留命令行工具和脚本GUI 工具全部放在 ISO 或 U 盘的 Tools 目录里。启动速度明显恢复X 盘也不会被挤爆。6.5 自定义启动脚本一闪而过有几次启动 PE 后自定义的 init.cmd 没有按预期执行或者执行后窗口一闪就关了根本来不及看报错信息。排查方法是在脚本里加pause或者cmd /k让窗口执行完先不关闭。比如把最后一行call X:\Tools\menu.cmd改成cmd /k call X:\Tools\menu.cmd这样就算菜单脚本运行失败窗口也会留着能看到具体是哪一步出的问题。调通之后再改回正常调用方式。这个系列的第一部分到这里主线任务已经完成你手上的 ISO 已经是一个全中文、带基础维护工具、可启动的 Win11PE。下一篇文章我会继续讲怎么把startnet.cmd升级成一个带菜单选择的启动外壳让 PE 一开机就能进入图形化维护界面把恢复数据、磁盘分区、系统安装这些操作做成一键入口。到现在为止我自己维护这套流程已经跑过不少机器最大的体会是第一次构建要踩的坑今天这篇文章基本都帮你踩平了后面再往里加功能只是往一个已经可靠的地基上继续添砖加瓦。