【win备份还原工具开发日记】06:v1.3.3 基线、断电续跑与 PE 恢复桌面

举报
任正非 发表于 2026/10/07 21:18:31 2026/10/07
【摘要】 v1.3.3 基线:固定约束与实现产品运行时只有 Rust:Rust Win32 GUI + Rust prepare + Rust Recovery.exe;PowerShell 只用于构建和测试控制。程序目录即工作目录:任务/载荷/状态/日志/BCD 快照都写 <程序目录>,不依赖 C:\ProgramData,不再让用户选"任务卷"。还原前按程序目录卷 GUID 与目标比较,相同立即阻...

v1.3.3 基线:固定约束与实现

  1. 产品运行时只有 Rust:Rust Win32 GUI + Rust prepare + Rust Recovery.exe;PowerShell 只用于构建和测试控制。

  2. 程序目录即工作目录:任务/载荷/状态/日志/BCD 快照都写 <程序目录>,不依赖 C:\ProgramData,不再让用户选"任务卷"。还原前按程序目录卷 GUID 与目标比较,相同立即阻止。

  3. 身份与保护:源/工作目录/镜像/目标/EFI 全存 GUID、偏移、容量、序列号;EFI/MSR/Recovery 不能做镜像卷或还原目标;BitLocker 未知或已加密即拒绝。

  4. 判断口径必须写清:代码已覆盖 / 离线已验证 / ARM64 构建已验证 / Windows 准备已验证 / WinRE 实机已验证 / GUI 真实鼠标已验证 / 已知失败,不能混级。

实机收口证据:断电续跑、EFI 回归与拒绝矩阵

  1. 三阶段断电续跑:power-loss-target-erased/image-applied/boot-repaired 各在独立快照完成真实 WinRE 断电→续跑→success;修复链是 v1.3.1 盘符参与 payload 比较 → v1.3.2 清临时盘符 + 放宽已格式化目标序列号 → v1.3.3 一次性 fault marker 防循环。

  2. 异常拒绝矩阵 6 案例全通过:无新任务目录、BCD 逻辑对比 UNCHANGED、WinRE 保持 Enabled、全程无重启。

  3. 两个真实 bug:json_text() 不处理布尔值 → GUI 的 hasWindowsInstallation 恒 false;EFI 保留分区在 assert_bitlocker_off 之前没显式拒绝(旧包会误报 BitLocker 错误)。

  4. GUI 自动化边界:GUI 以 HIGH 完整性运行时,非提升进程的 SendMessage/SetCursorPos/SendInput 被 UIPI 静默拦截;改用计划任务 Interactive + RunLevel Highest 在 Session 1 内注入 WM_COMMAND/BM_CLICK/WM_SETTEXT 才有效。

PE 作为第二系统与「恢复桌面」(路线 3)

  1. "BCD 有条目 ≠ 可引导"实锤:create-secondary 菜单真实出现两条目,但进入第二系统报 0xc000000f——根因是目标卷残缺(Q:\Windows\System32 只有 bootstr.dll 没有 winload.efi)。

  2. PE 引导链配错就 0xc0000225:自定义 osloader 条目第一次成功、重建后失败,差异是缺显式 systemroot \windows + nx OptIn;补上即恢复。

  3. 「返回 Windows」退出链三连坑:PE 内 /store 场景 {current} 解析成 PE 自己 → 部署期把 Windows 条目 GUID 写进 ESP pe-exit-guid.txt;ExitWindowsEx 在 PE 无权限静默失败 → 加 wpeutil reboot 兜底;std::fs 写 PE 挂载 FAT 卷失败 → 用 CreateFileW 直写卷路径日志。

  4. mountvol S: /S 未提升会静默失败,曾误判「NO_LOG」;读回日志必须用提升 PowerShell。

  5. PE 场景特有:PE(winpe=yes)里 bootmgr 不回写 bootsequence,设了就每次重启都进 PE,验证后需恢复快照或人工清。

  6. 固件阶段键盘注入无效:prlctl send-key-event 在 bootmgr 阶段完全不生效,Boot Manager 菜单交互自动化只剩 VNC/USB HID 通道(未采用)。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。