Windows 镜像定制很常见,无论是个人还是组织,足各种需求。 Windows 镜像定制。例如,移除不必要的系统组件、模块、app;以及其他系统配置,如关闭一些遥测数据发送,以保护用户的隐私和安全。例如,移除不必要的系统组件、模块、app;以及其他系统配置,如关闭一些遥测数据发送,以保护用户的隐私和安全。这些定制内容的效果主要体现在用户以后使用操作系统的过程中。那么,在用户安装操作系统的过程中,能否根据需要进行一些定制操作呢?答案是肯定的。
默认的Windows安装程序要求用户在安装过程中选择安装语言、安装版本、磁盘安装、时区及后续用户名和密码。一般安装工艺如下:
思考一下Windows镜像文件安装操作系统的过程可分为两种方式。首先进入到winPE环境,使用dism应用图像文件或运行图像文件Windows安装程序。另一种方法是从可启动的安装媒介,如刻录的U盘或DVD来运行Windows安装程序,进行Windows 安装操作系统。
通过镜像文件安装操作系统的两种方式最终会落脚 Windows 安装程序。只要我们能接管这个安装程序,或者我们自己安装安装程序 Windows,能够满足上述需求。
到此,定制 windows 10 安装程序的想法很流畅:启动盘开始引导,进入winpe,调用定制 windows 操作系统通过安装程序安装。安装程序实现与用户的所有交互和系统安装。所以,简单来说,这里只需要处理好winpe调用安装程序的过程和准备安装程序基本就够了。
确定思路,开始!
准备WinPE首先通过 Windows ADK制作WinPE。
Windows 有一个镜像文件PE文件,但选择 Windows ADK来制作winpe考虑两点:1. 镜像自带winpe体积比较大,ADK中winpe更简单,体积小;2. 镜像自带winpe有汉化不全等问题。这个时候找到相应的语言包并不容易,但是ADK它包含更全面的工具包,所以直接选择ADK来制作winpe。
在页面 Windows ADK页面下载 Windows ADK,每一个ADK都有对应的windows适用版本,我这里选择windows 10 1809 版本:
Windows ADK for Windows 10 版本 1809
适用于 ADK 版本 1809 的 Windows PE 加载项
两个exe文件下载后安装,初始界面如图所示,其余按默认选项点击"下一步";安装好。
ADK 安装界面
WindowsPE加载项 安装界面
安装完成后,菜单将在开始时出现:
选择";部署和图像工具环境",弹出ADK console。
执行 copype amd64 E:\\Win10PE 命令,x64版本winpe提取,在 E:\\Win10PE\\media\\sources 它将在目录下获得boot.wim文件。
修改WinPE挂载winpe在E:\\Win10PE\\media\\sources目录下创建boot文件夹,然后通过命令 dism /mount-wim /wimfile:"E:\\Win10PE\\media\\sources\\boot.wim" /index:1 /mountdir:"E:\\Win10PE\\media\\sources\\boot" 将boot.wim文件挂载到boot目录。目录结构如下图所示
添加中文语言支持1通过 Dism /Get-Packages /Image:"E:\\Win10PE\\media\\sources\\boot";命令查看winpe中安装的包
WinPE语言支持中文需要配置,否则以后显示中文时会出现乱码问题。
执行以下命令添加中文支持
加入中文语言包dism /Add-Package /Image:E:\\Win10PE\\media\\sources\\boot /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:E:\\Win10PE\\media\\sources\\boot /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:E:\\Win10PE\\media\\sources\\boot /PackagePath:"C:\\Program Files (x86)\\Windows Kits\\10\\Assessment and Deployment Kit\\Windows Preinstallation Environment\\amd64\\WinPE_OCs\\WinPE-FontSupport-ZH-CN.cab" 区域设置改为使用中文dism /Set-AllIntl:zh-CN /Image:"E:\\Win10PE\\media\\sources\\boot"
安装完成后,查看winpe语言包已成功安装。
修改WinPE启动后调用程序默认情况下,Winpeshl.exe 是 Windows PE 启动时运行的第一个过程。
修改WinPE启动后调用程序
默认情况下,Winpeshl.exe 是 Windows PE 启动时运行的第一个过程。Winpeshl.exe 在System32下搜索名为 Winpeshl.ini 的文件。Winpeshl.ini 能否控制自定义shell程序加载到 Windows PE而不是默认的命令提示符窗口。 若文件不存在,Winpeshl.exe 启动执行 Startnet.cmd 脚本的 Cmd.exe 进程。 如果 Winpeshl.ini 存在并包含要启动的应用程序将执行这些应用程序,而不是 Cmd.exe2。
ADK中的boot.wim挂载后,在 E:\\Win10PE\\media\\sources\\boot\\Windows\\System32 目录下没有 Winpeshl.ini 需要手动创建文件,注意编码格式utf8。Winpeshl.ini可参考官方文件:Winpeshl.ini 参考:启动 WinPE 时启动应用因为我只需要加载一个应用程序,所以在Winpeshl.ini中仅设置[LaunchApp]这个条目就够了。CustomSetup.exe是我写的安装程序。Winpeshl.ini 文件内容:
[LaunchApp]AppPath = %SYSTEMDRIVE%\\Program Files\\Custom\\CustomSetup.exe
开发 Windows 安装程序Windows PE 它包含了大量的功能支持(Windows PE 功能支持),主要用于实现安装程序 "Windows 应用程序编程接口(API)" 和 ";图像管理和维护(DISM)工具"。
这里的 Windows 安装程序主要适用于自定义安装,即清洁安装。
这里的 Windows 安装程序主要适用于自定义安装,即清洁安装。这一阶段包括两个基本的操作,一个是配置磁盘(分区和格式化)。另一个是将军 Windows 将图像复制到磁盘上。此外,还可以添加接受度License还有一些其他配置为用户提供了更丰富的控制接口。我将在安装过程中实现这两个最基本的操作。因为是在 Windows PE 在环境中实施,因此采用基础WIN32编程不依赖于任何现有的框架。简单添加几个基本页面,具体代码不会粘贴。实现硬盘驱动器分区、复制和应用系统镜像两个基本功能。
实现硬盘分区:
微软提供了一个 CreatePartitions-UEFI.txt 它将磁盘分为系统分区(S)、MSR保留分区、Windows分区(W)和恢复分区(R)。为了简化实现,安装程序首先查询用户硬盘驱动器的总尺寸,根据用户输入的C盘和D盘的尺寸,生成需要执行的脚本。然后执行脚本,实现硬盘分区和格式化。
实现镜像复制和应用
应用映像(install.wim中内容)到 Windows 分区dism /Apply-Image /ImageFile:"$drive\\sources\\install.wim" /Index:1 /ApplyDir:"$windowsDrive"使用bcdboot工具配置系统分区$windowsDrive\\Windows\\System32\\bcdboot $windowsDrive\\Windows /s $systemDrive将 Windows 恢复环境(winre)工具复制到恢复工具分区mkdir $recoveryDrive\\Recovery\\WindowsRExcopy /h $windowsDrive\\Windows\\System32\\Recovery\\Winre.wim $recoveryDrive\\Recovery\\WindowsRE\\工具的位置,然后使用 Diskpart 隐藏恢复分区$windowsDrive\\Windows\\System32\\Reagentc /Setreimage /Path $recoveryDrive\\Recovery\\WindowsRE /Target $windowsDrive\\Windows$windowsDrive\\Windows\\System32\\Reagentc /Info /Target $windowsDrive\\Windows
电脑知识