WSABuilds 进阶排障:清除 WSA 设置与“添加或删除程序”中残留的 Android 应用注册表项
【免费下载链接】WSABuildsRun Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solutions) built in.项目地址: https://gitcode.com/GitHub_Trending/ws/WSABuilds
WSA Build 之间切换(例如从带 Amazon Appstore 的构建切换到 "Removed Amazon Appstore" 版本,或从 MindTheGapps 切换到 No-Gapps 版本)、以及彻底卸载 WSA 之后,旧构建中预装的系统应用(Google Play Store 及关联应用、Amazon Appstore 等)往往会以"幽灵条目"的形式残留在 WSA 设置的Apps页面或 Windows 的添加或删除程序(Add and Remove Programs)中,甚至被第三方卸载器/应用管理器识别出来。本篇指南基于 Remove Non Existent Entries 原文档展开,讲解如何通过注册表精确定位并删除这些指向已不存在应用的卸载项,并结合仓库中的 WSAUninstaller.py 源码印证该操作背后的实现原理,使读者既能手动完成清理,也能理解清理机制的底层依据。
一、问题成因:为什么已不存在的 App 还会出现在列表里
Windows 中"添加或删除程序"以及各类应用管理工具所显示的应用列表,本质上是读取注册表中以下位置的卸载项(uninstall entry):
Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall每个曾经注册过卸载入口的应用(包括 MSIX/MSI 包安装的应用)都会在此处留下一个以包标识命名的子项。正常情况下,卸载应用时会同步移除对应子项;但在以下 WSABuilds 场景中,子项可能残留:
- 构建切换:从一个 WSA Build 切换到功能组合不同的另一个 Build(例如 Amazon Appstore 构建 → Removed Amazon Appstore 构建,或 GApps 构建 → No-Gapps 构建)。新构建中不再包含某些系统应用,但旧构建注册到
Uninstall键下的条目并不会被自动回收,导致 WSA 设置 App 页面仍显示这些应用; - 完全卸载 WSA 后:部分条目仍残留在"添加或删除程序"或第三方卸载器中,表现为点击后报错、或条目指向不存在的文件。
需要强调的是,这些条目本身只是"卸载信息记录",并不代表应用数据仍存在——应用实体(APK/系统分区内容)已经随旧构建或 WSA 卸载而消失,因此清理它们是移除陈旧元数据而非卸载应用,风险相对可控,但仍建议操作前确认条目内容。
二、清理前提与适用范围
动手前先确认满足以下前提:
- 目标条目对应的应用确实已不存在(属于旧构建的残留),而不是当前 WSA 仍在运行的系统应用。可先进入 WSA 设置 App 页面核对:如果某条目在 WSA 内已无法打开、无版本信息,基本可以判定为幽灵条目;
- 操作的是HKEY_CURRENT_USER(当前用户)分支下的
Uninstall键。仓库源码 WSAUninstaller.py 中批量清理 WSA 相关条目时使用的正是这一键路径,可佐证 WSABuilds 生态中此类残留项的实际所在位置; - 删除注册表项前最好创建系统还原点。仓库自带的卸载脚本 WSAUninstaller.py 在
main()执行前先调用create_restore_point()(通过 PowerShellCheckpoint-Computer创建还原点),并在执行期间临时调整SystemRestore键的SystemRestorePointCreationFrequency值、结束后恢复原值(见 with_restore_point_creation_frequency),手动操作时可以借鉴这一"先留后路"的思路。
适用环境:Windows 10 / Windows 11 上由 WSABuilds 安装(或微软商店安装)的 Windows Subsystem for Android。
三、手动清理步骤(核心操作流程)
以下步骤完整继承自原文档,按顺序执行即可:
1. 以管理员身份打开注册表编辑器(regedit.exe)
在开始菜单搜索regedit,右键选择"以管理员身份运行"。
2. 导航到卸载项根键
Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall3. 在子项中查找目标应用的条目
该键下的每个子项对应一个应用。WSABuilds 场景下,需要重点排查的条目名称通常包含以下特征字符串(这也是仓库卸载脚本用于匹配残留键的判断依据):
MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe例如,旧构建中 Google Play Store、Amazon Appstore 等系统应用注册到Uninstall键下的条目会集中在此处。利用注册表编辑器的查找功能(Ctrl + F)输入应用名或上述特征字符串可快速定位。
4. 确认无误后删除该条目
右键对应子项 → 删除。建议删除前双击子项查看(默认)值、DisplayName、UninstallString等值确认其归属,避免误删仍在使用的其他应用。
5. 对每个需要清理的应用重复步骤 3 和 4
6. 重启电脑
7. 验证结果
重启后,已删除条目的应用应不再出现在 WSA 设置的Apps页面中;在"添加或删除程序"里的对应残留同样消失。
四、源码印证:卸载脚本是如何自动化这一清理的
对于"完全卸载 WSA 后仍有残留条目"的场景,仓库提供了脚本化方案。WSAUninstaller.py(版本 1.1.0,AGPL-3.0,见 License.txt)的核心清理逻辑与上文手动操作一一对应:
- 注册表清理:delete_registry_folders() 打开
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall键,用winreg.EnumKey逐个枚举子项名,凡子项名中包含MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe的一律DeleteKeyEx删除——即手动步骤 3~4 的程序化版本,同时说明了条目匹配采用"子项名包含包标识"的宽松策略; - 包级卸载:uninstall_msix_package() 通过
Get-AppxPackage | Remove-AppxPackage先卸载 MSIX 包本体,再从注册表层面清扫残留; - 数据目录清理:
dirs_to_check列表(第 51-58 行)覆盖%LocalAppData%\Packages、%LocalAppData%\Microsoft\WindowsApps、C:\ProgramData\Packages等位置的MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe目录,与 Uninstallation 文档中要求手动检查并删除%LOCALAPPDATA%\Packages下同名文件夹的步骤一致; - 开始菜单快捷方式清理:delete_shortcuts() 遍历
C:\ProgramData\Microsoft\Windows\Start Menu\Programs,删除指向 WSA 包的快捷方式。
从源码结构看,脚本要求管理员权限运行(is_admin()检查,第 34-42 行),整体流程为:创建还原点 → 卸载 MSIX 包 → 删除残留目录 → 清扫Uninstall注册表项 → 删除快捷方式,恰好覆盖了本指南所处理的"卸载后残留条目"问题的完整链路。如果残留条目数量多或反复出现,直接运行该脚本比逐条手动删除更高效;若只是想清除个别 App 条目,则按第三节的注册表手动方式操作更轻量。
五、边界、风险与注意事项
- 只删元数据,不删数据:本指南删除的是
Uninstall键下的卸载条目,不涉及 WSA 内部 Android 数据。若需保留用户数据,卸载前应备份%LOCALAPPDATA%\Packages\MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe\LocalCache\userdata.vhdx,相关说明见 Uninstallation 与 Backup and Restore。 - 避免误删有效条目:当前 WSA 构建中实际在用的应用(例如当前构建保留的 Google Play Store)在
Uninstall键下同样有对应条目,删除后该应用会从 WSA 设置 Apps 页面消失且无法通过常规入口卸载/恢复,因此务必先在 WSA 内确认条目对应的应用确实已不存在。 - GApps 切换的特殊性:根据 FAQ,OpenGApps 与 MindTheGapps 之间不支持直接切换,GApps 将不再正常工作,必须先做一次完整卸载再安装——在"换 GApps 组合"这条路径上,本指南的残留清理是收尾环节而非替代方案。
- 构建差异的背景:仓库的 Custom Builds 文档说明,WSABuilds 的预构建版本按 GApps(MindTheGapps / No-Gapps)× Amazon Appstore(保留 / 移除)× Root 方案(Magisk / KernelSU / 无)组合区分,正是这种组合差异制造了"同机先后安装两套构建"的场景,也是本指南存在的根本原因。
六、小结
- 残留条目本质是
HKCU\...\CurrentVersion\Uninstall键下陈旧的卸载元数据,应用实体已不存在; - 手动清理路径固定:管理员运行
regedit→ 导航至Uninstall键 → 按MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe或应用名定位子项 → 删除 → 重启验证; - 仓库的 WSAUninstaller.py 以
EnumKey+DeleteKeyEx的方式程序化了同一操作,可作为批量清理或彻底卸载场景的自动化参考。
【免费下载链接】WSABuildsRun Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solutions) built in.项目地址: https://gitcode.com/GitHub_Trending/ws/WSABuilds
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考