|
|
|
Win7非旗舰版永久开启原生VHD启动 全PE环境专属方案 本方案全程可在Windows PE环境下完成,无需进入目标Win7系统,所有操作一次性落地,通过精准修改VHD启动控制开关+系统原生regini工具锁定注册表权限,彻底解决重启后键值自动重置问题,全程不修改任何系统文件,无兼容性风险。 一、PE环境前置准备与VHD挂载 1.准备与目标Win7系统架构匹配的Windows PE环境(32位Win7对应32位PE,64位Win7对应64位PE,优先使用Win7内核PE,避免注册表兼容问题) 2.进入PE环境后,先挂载目标Win7 VHD镜像:打开桌面【计算机】-右键【管理】-【磁盘管理】-点击顶部菜单【操作】-【附加VHD】,选择你的Win7 VHD镜像文件,点击确定完成挂载,记住挂载后分配的系统分区盘符(比如D盘,该分区必须包含Windows文件夹) 3.操作前务必备份原VHD镜像文件,避免操作失误导致系统无法启动 二、PE环境下离线加载目标Win7系统注册表 1.打开PE系统的注册表编辑器:按下Win+R键,输入regedit,回车打开 2.在注册表编辑器左侧导航栏,选中【HKEY_LOCAL_MACHINE】根项 3.点击顶部菜单【文件】-【加载配置单元】,在弹出的窗口中,选择刚才挂载的VHD系统分区内的文件:X:\Windows\System32\config\SYSTEM(X替换为你挂载的VHD系统分区实际盘符,比如D盘就填D:\Windows\System32\config\SYSTEM) 4.弹出的“项名称”窗口中,自定义输入OFFLINE_SYSTEM,点击确定,即可将目标Win7的系统注册表配置单元,加载到PE的注册表中,后续所有修改均针对该离线项,不会影响PE系统本身 三、精准定位并修改VHD启动核心控制开关(带完整修改示例) 核心原理说明 Win7非旗舰版的原生VHD启动功能,被系统产品策略禁用,核心控制项为注册表中Kernel-NativeVHDBoot-Allowed,默认值为0(禁用VHD启动),需修改为1(启用VHD启动)。该值存储在ProductPolicy二进制值中,不同中英文系统、不同SP版本的行号存在差异,禁止按行号定位,必须通过固定的十六进制编码序列精准定位。 完整定位与修改操作 1.在PE的注册表编辑器中,展开左侧加载的项,定位到路径:HKEY_LOCAL_MACHINE\OFFLINE_SYSTEM\ControlSet001\Control\ProductOptions 补充说明:若你的系统中ControlSet001不存在,可替换为ControlSet002,二者为系统的控制集,选择存在的那一个即可 2.在右侧窗口中,找到名为ProductPolicy的二进制值,双击打开编辑窗口 3.在编辑窗口中,按下Ctrl+F打开查找功能,选择“十六进制”查找,输入以下完整的名称编码序列,点击查找下一个,即可精准定位到目标位置: plaintext 4B 00 65 00 72 00 6E 00 65 00 6C 00 2D 00 4E 00 61 00 74 00 69 00 76 00 65 00 56 00 48 00 44 00 42 00 6F 00 6F 00 74 00 2D 00 41 00 6C 00 6C 00 6F 00 77 00 65 00 64 00 4.定位成功后,你会看到该名称编码后,跟随固定的结构序列,以下为禁用状态(默认)的完整连续十六进制示例: plaintext 4B 00 65 00 72 00 6E 00 65 00 6C 00 2D 00 4E 00 61 00 74 00 69 00 76 00 65 00 56 00 48 00 44 00 42 00 6F 00 6F 00 74 00 2D 00 41 00 6C 00 6C 00 6F 00 77 00 65 00 64 00 00 00 00 00 04 00 04 00 00 00 00 00 结构拆解说明: - 前半段为Kernel-NativeVHDBoot-Allowed的UTF-16 LE固定编码 - 随后的00 00 00 00为名称结束符 - 随后的04 00为固定数据类型标识 - 随后的04 00为固定数据长度标识 - 最后4个字节00 00 00 00为核心开关值,0代表禁用VHD启动 5.执行修改操作:将最后4个字节的开关值,从00 00 00 00修改为01 00 00 00,修改后的完整连续十六进制示例如下: plaintext 4B 00 65 00 72 00 6E 00 65 00 6C 00 2D 00 4E 00 61 00 74 00 69 00 76 00 65 00 56 00 48 00 44 00 42 00 6F 00 6F 00 74 00 2D 00 41 00 6C 00 6C 00 6F 00 77 00 65 00 64 00 00 00 00 00 04 00 04 00 01 00 00 00 6.修改完成后,点击编辑窗口的【确定】按钮,保存对ProductPolicy二进制值的修改 四、制作修改后的标准reg文件(带完整示例代码) 修改完成后,我们导出该注册表项为标准reg文件,用于备份和后续校验,操作如下: 1.在注册表编辑器左侧,右键点击ProductOptions项,选择【导出】 2.选择保存路径,命名为vhd_boot_permanent.reg,保存类型选择“注册文件(*.reg)”,点击保存 3.该reg文件的完整标准代码示例如下,你可以右键该文件选择“编辑”,查看是否与你的修改内容匹配: plaintext Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\OFFLINE_SYSTEM\ControlSet001\Control\ProductOptions] "ProductPolicy"=hex:6C,00,6F,00,63,00,6D,00,00,00,00,00,48,00,32,00,04,\ 00,04,00,02,00,00,00,00,00,00,00,4B,00,65,00,72,00,6E,00,65,00,6C,00,\ 2D,00,4D,00,55,00,49,00,2D,00,4E,00,75,00,6D,00,62,00,65,00,72,00,2D,\ 00,41,00,6C,00,6C,00,6F,00,77,00,65,00,64,00,00,00,00,00,04,00,04,00,\ 01,00,00,00,此处替换为你系统中修改后的完整二进制内容,01,00,00,00 补充说明:该reg文件的二进制内容为你修改后的完整ProductPolicy值,不同系统版本的二进制长度存在差异,以上仅为格式示例,请勿直接复制使用,必须使用你自己修改后导出的完整内容,避免系统兼容性问题。 五、PE环境下用regini工具锁定注册表权限,彻底解决重启重置问题 权限锁定核心说明 系统重启后键值自动重置的根本原因,是系统sppsvc服务通过TrustedInstaller最高权限账户,在开机时重写该注册表项。本步骤通过系统原生的regini工具,在PE离线环境下,直接修改该注册表项的所有者,再限制所有账户仅拥有读取权限,彻底拒绝任何写入、修改操作,从根源上阻止键值被重置,全程在PE下完成,无需进入目标系统。 步骤1:PE下修改注册表项所有者 1.在PE的注册表编辑器中,右键点击左侧的ProductOptions项,路径为HKEY_LOCAL_MACHINE\OFFLINE_SYSTEM\ControlSet001\Control\ProductOptions 2.选择【权限】-【高级】,切换到【所有者】选项卡 3.在“将所有者更改为”列表中,选择【Administrators】管理员组,点击【应用】-【确定】,完成所有者修改 4.回到权限设置窗口,点击【确定】关闭所有窗口 步骤2:制作regini权限配置脚本 1.在PE桌面新建文本文档,右键选择【编辑】打开 2.输入以下完整的权限配置代码,注意路径必须与你加载的离线注册表项匹配,不可修改路径结构: plaintext \Registry\Machine\OFFLINE_SYSTEM\ControlSet001\Control\ProductOptions [2 8 14] 代码详细说明: - 路径部分\Registry\Machine\OFFLINE_SYSTEM\ControlSet001\Control\ProductOptions,为regini工具识别的离线注册表完整路径,对应你加载的OFFLINE_SYSTEM项,不可随意修改 - 方括号内为权限代码,含义如下: - 2:给Administrators管理员组分配只读权限,禁止任何写入修改操作 - 8:给Everyone所有用户分配只读权限,禁止任何写入修改操作 - 14:给System系统账户分配只读权限,禁止任何写入修改操作 - 该配置会彻底禁止所有账户对该项的写入、修改、删除操作,仅保留系统正常运行必需的读取权限,完全阻止sppsvc服务重写键值 3.编辑完成后,点击【文件】-【另存为】,保存类型选择“所有文件”,文件名为lock_policy.ini,保存路径选择PE系统的C:\Windows\System32目录,点击保存 步骤3:PE下执行regini权限锁定命令 1.按下Win+R键,输入cmd,右键选择【以管理员身份运行】,打开管理员权限的命令提示符 2.在cmd窗口中输入以下命令,回车执行: plaintext regini C:\Windows\System32\lock_policy.ini 3.命令执行完成后,无任何报错提示,即代表权限锁定成功。你可以回到注册表编辑器,右键ProductOptions项查看权限,确认所有账户仅拥有读取权限,无任何写入权限 六、PE环境收尾操作,完成全流程配置 1.回到注册表编辑器,在左侧导航栏选中你加载的OFFLINE_SYSTEM项 2.点击顶部菜单【文件】-【卸载配置单元】,在弹出的确认窗口中点击【是】,保存所有对离线注册表的修改 3.打开【磁盘管理】,右键点击之前挂载的VHD磁盘,选择【分离VHD】,点击确定完成卸载 4.全流程操作完成,现在你可以直接使用该VHD镜像启动系统,重启后键值不会再被重置,永久开启Win7非旗舰版的原生VHD启动功能 |
|