微软原版24H2WinPE没有图形界面,只有简单的cmd命令行,不适用普通用户,这版定制化的24H2WinPE集成了powershell和图形界面,并且软件兼容性较高,导致2G内存使用率高达98%左右,此时打开cmd命令行OK,如果再干点别的,比如打开powershell或者打开图形界面的东西比如任务管理器,就内存不足而异常了。建议≥2.5G内存的机器使用。
主要思路:用微软官方的办法给boot.wim集成powershell,然后用开源的wimbuilder2搞定图形界面
WimBuilder2是个开源项目,大大简化了WinPE制作。市面上WinPE很多,鲜有软件兼容性很强的,WimBuilder2是我遇到的唯一,在这之外我比较喜欢HotPE,虽然软件兼容性不如WimBuilder2,但HotPE的细节比较好。
WimBuilder2在使用24H2 ISO制作WinPE时的坑很多,如果不着急,可以等作者下一年度的新版,或者使用23H2 ISO制作WinPE,但23H2不支持24H2的ReFS,这才是我搞24H2 WinPE的根因。
1、微软ISO
https://www.microsoft.com/zh-cn/software-download/windows11
2、微软官方制作winpe的adk工具
首先,参考微软官网文档https://learn.microsoft.com/zh-cn/windows-hardware/get-started/adk-install配置环境winpe开发环境
配好后在开始菜单会有个"部署和映像工具环境"的快捷方式,即C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Windows Kits\Windows ADK\Deployment and Imaging Tools Environment.lnk
该快捷方式指向C:\windows\system32\cmd.exe /k "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat"
用微软24H2 Win11 ISO中sources目录下的boot.wim替换C:\WinPE_amd64_PS\media\sources\boot.wim
然后按下面指令改造boot.wim给winpe集成powershell等模块
copype amd64 C:\WinPE_amd64_PS
Dism /Mount-Image /ImageFile:"C:\WinPE_amd64_PS\media\sources\boot.wim" /Index:1 /MountDir:"C:\WinPE_amd64_PS\mount"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-ZH-CN.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-ZH-HK.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-ZH-TW.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-Fonts-Legacy.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-SecureBootCmdlets.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-HSP-Driver.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\lp.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\lp.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-WMI_en-us.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /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"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-NetFX.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-NetFX_en-us.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\WinPE-NetFX_zh-cn.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-Scripting.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-Scripting_en-us.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\WinPE-Scripting_zh-cn.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-PowerShell.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-PowerShell_en-us.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\WinPE-PowerShell_zh-cn.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-StorageWMI.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-StorageWMI_en-us.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\WinPE-StorageWMI_zh-cn.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-DismCmdlets.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-DismCmdlets_en-us.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\WinPE-DismCmdlets_zh-cn.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-HTA.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-HTA_en-us.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\WinPE-HTA_zh-cn.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-Dot3Svc.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-Dot3Svc_en-us.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\WinPE-Dot3Svc_zh-cn.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-SecureStartup.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-SecureStartup_en-us.cab"
Dism /Add-Package /Image:"C:\WinPE_amd64_PS\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\WinPE-SecureStartup_zh-cn.cab"
Dism /Get-Packages /Image:"C:\WinPE_amd64_PS\mount"
Dism /Set-AllIntl:en-US /Image:"C:\WinPE_amd64_PS\mount"
Dism /Set-AllIntl:zh-CN /Image:"C:\WinPE_amd64_PS\mount"
Dism /Image:"C:\WinPE_amd64_PS\mount" /Get-Drivers
Dism /Image:"C:\WinPE_amd64_PS\mount" /Add-Driver /Driver:"C:\Users\Administrator\Desktop\amd64\viostor.inf" /ForceUnsigned
Dism /Image:"C:\WinPE_amd64_PS\mount" /Add-Driver /Driver:"C:\Users\Administrator\Desktop\amd64\netkvm.inf" /ForceUnsigned
Dism /Image:"C:\WinPE_amd64_PS\mount" /Add-Driver /Driver:"C:\Users\Administrator\Desktop\amd64\bnxtnd.inf" /ForceUnsigned
Dism /Image:"C:\WinPE_amd64_PS\mount" /Get-Drivers
Dism /Unmount-Image /MountDir:"C:\WinPE_amd64_PS\mount" /Commit
#Dism /Unmount-Image /MountDir:"C:\WinPE_amd64_PS\mount" /Discard
wimbuilder2的坑很多,无法一一言明,直接用我debugfix后的压缩包
通过百度网盘分享的文件:WimBuilder2-Full.v2024-11-11_debugfix.7z
链接: https://pan.baidu.com/s/1wqVcsROZoaLITlKKmwNN-Q?pwd=ivas 提取码: ivas
4、使用说明
①解压WimBuilder2-Full.v2024-11-11_debugfix.7z,把改造好的C:\WinPE_amd64_PS\media\sources\boot.wim放到WimBuilder2-Full.v2024-11-11_debugfix\test\目录下
②高版本系统一般能直接双击挂载ISO,不能挂载ISO的话,安装虚拟光驱软件(比如WinCDEmu)来挂载
③双击WimBuilder.cmd,左侧“设置”检查是否专家模式,是的话继续,不是的话选专家模式
④左侧“准备”,选一下install.wim的序号、boot.wim一定要选前面改造好的test\boot.wim
⑤next到下图界面选预设配置文件,选custom88888
⑥选定后一直next下图界面,勾选"构建后立即创建ISO",然后点箭头所指的按钮后等着,不要管自动刷新的回显有啥报错,最后会出现编译好的ISO的路径
这样一个既有powershell、又有图形界面的24H2 Win11PE就制作好了。
WinPE本身的盘符是X:,显示有8GB空间,这个是虚拟的,不是真能塞8GB东西,主要看机器内存容量,内存2GB的话很容易崩溃的,因为操作系统运行以及桌面"创建快捷方式.bat"触发压缩包释放的一些文件其实都在内存里,包括后续任何动作产生的X:盘新增空间占用,其实都是消耗内存。
X:原本我是搞2GB的,但dism++有5GB剩余空间要求,因此搞的8GB来骗过dism++不报错。
1、winpe下,原系统分区的盘符不一定是C:,也不一定会自动分配盘符,如果没看到盘符,需要在磁盘管理器里手动指定一个盘符。当然也可以通过命令行分配。
2、dism++图形界面能处理用户密码、启动引导、驱动和补丁维护等问题
1、 支持安装常用软件,比如notepad++、notepad--、cosbrowser、StarWind、UltraISO、Registry Workshop等
绿色软件无穷尽,天下WinPE一通抄,需要什么自己装,建议>2GB内存的机器使用
2、 集成了常用绿色软件(桌面有个"创建快捷方式.bat",双击后产生绿色软件快捷方式到桌面)
耐心等等窗口自己消失
3、 开机自动运行.bat文件做一些初始化的动作
开机自动运行的文件位置:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
耐心等等窗口自己消失
如果二次开发,需要开机自动执行什么动作,脚本可以放到上述目录,这是Windows本身机制
一般有2个目录,我习惯放在shell:common startup(这个是简写,建议绝对路径,也就是前面提到的那个ProgramData路径)
shell: startup
shell:common startup
假设原系统盘盘符在winpe下是E:,假设virtio驱动安装文件内置在X:\amd64\,要集成virtio驱动的话
假设原系统盘盘符在winpe下是E:,假设virtio驱动安装文件内置在X:\amd64\,要集成virtio驱动的话
Dism /Image:"E:" /Get-Drivers
Dism /Add-Driver /Image:"E:" /Driver:"X:\amd64\viostor.inf" /ForceUnsigned
Dism /Add-Driver /Image:"E:" /Driver:"X:\amd64\netkvm.inf" /ForceUnsigned
Dism /Add-Driver /Image:"E:" /Driver:"X:\amd64\bnxtnd.inf" /ForceUnsigned
Dism /Image:"E:" /Get-Drivers
4、 支持设备管理器devmgmt.msc、磁盘管理器diskmgmt.msc、本地连接ncpa.cpl
不支持appwiz.cpl
5、 支持“Ctrl+空格”切换中英文输入法,默认En,方便粘贴命令
6、 桌面右键有在此处打开cmd以及重启explorer的功能
7、 常见使用场景
①修复启动引导
先给efi分区(ESP分区)在diskpart命令里分配一个盘符,假设分配的是A,假如对应的系统分区的盘符是D,则修复启动引导的命令是:
bcdboot D:\Windows /s A: /f UEFI
如果是BIOS启动类型,修复启动引导的话,命令是:
bcdboot D:\Windows /s D:
②修复virtio驱动
可以使用dism命令
可以使用dism++图形界面
③替换备份注册表、修改注册表键值
比如,在系统运行时,维护注册表时提示没权限
server系统才有备份注册表,pc系统没有
替换备份注册表参考https://cloud.tencent.com/developer/article/2472924
④修改密码
⑤处理文件
比如,在系统运行时,操作一些文件时提示没有权限
⑥安装系统
下载iso到数据盘,通过winntsetup或iso里的setup.exe安装系统
winntsetup参考https://cloud.tencent.com/developer/article/2029919
setup.exe参考https://cloud.tencent.com/developer/article/2479579
⑦一些个性化的操作,比如
https://cloud.tencent.com/developer/article/2482055
https://cloud.tencent.com/developer/article/2328253
https://cloud.tencent.com/developer/article/2056947
https://cloud.tencent.com/developer/article/2464843
后记:win10pe Administrator用户支持远程和共享文件夹、切换到SYSTEM用户则不支持远程和共享文件夹
最早的win10pe我默认设计的Administrator,支持启用远程和445共享(需要自己命令行设置Administrator密码),桌面有图标可以切换system用户
后来的pe越来越大,加之一些场景只能提权至system处理,综合考虑权衡取舍之下只保留system用户,但system不支持远程和445共享
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。