Parallels Desktop 重装后把旧 Windows 11 虚拟机漏注册的问题

Parallels Desktop 重装后没有加载旧 Windows 11 .pvm,反而注册了一个 Windows 11 (1) 空壳

这次遇到一个挺有意思、也挺容易误判的问题:Parallels Desktop 重装或重新初始化后,界面没有自动加载原来的 Windows 11 虚拟机,而是进入下载/新建 Windows 11 的流程。这个情况之前已经遇到过两三次,这次刚好把本机状态抓清楚了。

现象

  • 重装/重新打开 Parallels Desktop 后,原来的 Windows 11 虚拟机在 UI 里不可用。
  • Parallels 提示继续下载/安装新的 Windows 11,看起来像是旧虚拟机丢了。
  • 但磁盘上原来的虚拟机包其实还在:~/Parallels/Windows 11.pvm

实际检查到的状态

这次本机环境大致是:

  • macOS 26.5
  • Parallels Desktop 26.4.0 (57488)
  • Apple silicon 上的 Windows 11 虚拟机

磁盘上同时出现了两个包:

  • ~/Parallels/Windows 11.pvm:约 27-28 GB,是真正的旧虚拟机。
  • ~/Parallels/Windows 11 (1).pvm:约 2.3 MB,像是安装向导临时生成的新虚拟机空壳。

关键点在于,prlctl list -a 当时只列出了 Windows 11 (1),没有列出原来的 Windows 11。也就是说,问题不是旧虚拟机文件没了,而是 Parallels 的虚拟机注册表/库没有指向旧 .pvm,反而只注册了新生成的 (1) 空壳。

这就解释了为什么 UI 会要求下载新的 Windows 11:它没有把现成的 ~/Parallels/Windows 11.pvm 当成当前虚拟机来加载。

修复方式

处理思路很简单:移除错误注册的空壳,把旧 .pvm 重新注册回 Parallels。

大致命令如下:

PRL="/Applications/Parallels Desktop.app/Contents/MacOS/prlctl"

"$PRL" unregister "Windows 11 (1)"
rm -rf "$HOME/Parallels/Windows 11 (1).pvm"
"$PRL" register "$HOME/Parallels/Windows 11.pvm" --preserve-uuid --name "Windows 11"
"$PRL" list -a

这次为了避免误删,我没有直接先删原包,而是确认:

  • 原来的 Windows 11.pvm 是大包;
  • (1) 是 2.3 MB 的空壳;
  • 注册表里只剩 (1)
  • 重新注册后,Home path 指向 ~/Parallels/Windows 11.pvm/config.pvs
  • hdd0 指向 ~/Parallels/Windows 11.pvm/harddisk.hdd
  • 虚拟机能正常打开。

修复后 Parallels 里只剩无后缀的 Windows 11,旧系统可以正常启动。

可能的根因判断

我不确定 Parallels 内部具体是哪一步出错,但从这次证据看,更像是“重装/重新初始化后虚拟机注册库丢失或没有重新发现旧 .pvm”,而不是虚拟机镜像损坏。

比较合理的产品侧改进是:

  1. 如果默认目录下已经存在 Windows 11.pvm,重装后应该优先发现并提示用户重新注册旧虚拟机,而不是直接创建 Windows 11 (1).pvm
  2. 如果 UI 进入下载新 Windows 流程,应该先检测 ~/Parallels/*.pvm 里是否有可恢复的旧虚拟机。
  3. 当库里注册的是一个 2 MB 级别的新建空壳,而旁边存在几十 GB 的同名旧虚拟机包时,应该给出“发现旧虚拟机,是否重新连接”的提示。

这个问题最危险的地方是它给人的第一印象像“旧 Windows 丢了”,但实际只是 Parallels 的注册路径错了。只要旧 .pvm 还在,通常不需要重新下载 Windows,也不需要重装系统。