把一个 12 GB 的设计软件从 C 盘搬到 D 盘,搬完打不开了,重装又找不回授权。
搬之前他查过资料:翻到的教程都在讲怎么剪切目录,「免费清理c盘」那类文章把软件搬家列成常规操作,带一键搬家功能的工具也不少。没有一处说哪些软件不能这么搬。
我看了一遍这台机器上装的软件和各自的体积。大多数教程只讲怎么搬,没讲哪些软件搬完必崩——而这恰恰是唯一需要判断的地方。
所谓搬家,做的是两件事:把安装目录整体移到新盘,然后在原位置建一个目录符号链接指向新位置。
mklink /D "C:\Program Files\某软件" "D:\Apps\某软件"建完之后,任何程序去访问 C:\Program Files\某软件,系统会在文件系统层把请求转到 D:\Apps\某软件。对上层来说,这个目录看起来还在原来的位置。
原理上很干净,问题出在有些软件不只依赖安装目录。
绿色软件和大多数普通应用。安装目录自包含,配置写在 AppData 里,注册表只留几个路径记录。这类搬完基本没事。
游戏。Steam、Epic 这类平台自己就支持多库目录,直接在平台里用「移动安装文件夹」的功能,比手工搬安全得多。单机游戏的安装目录多数也是自包含的。
开发工具链。SDK、编译器、Node、Python 这类通常只依赖 PATH,搬完改一下环境变量就行。
装了系统服务的软件。 服务的可执行文件路径写在注册表 HKLM\SYSTEM\CurrentControlSet\Services 里,是绝对路径。符号链接对服务启动这条路径有时不生效,服务起不来,软件就废了。杀毒软件、数据库、虚拟机平台都属于这一类。
装了驱动或者内核模块的。 驱动加载走的是另一套机制,不认符号链接。
带授权绑定的商业软件。 有些授权文件会记录安装路径的哈希,路径变了就判定为非法安装。开头那台机器上的设计软件就是这种。
Office 和其他 MSI 安装的大型套件。 它们的修复、更新、卸载都依赖 C:\Windows\Installer 里的记录,那里存的是原始路径。搬完之后更新会失败。
已经在运行的软件。 这条最基本,搬之前必须完全退出,包括托盘图标和后台服务。
搬家是最后手段,下面三个都比它安全。
一,重装到 D 盘。 卸载再装一遍,安装时选 D 盘路径。多花十分钟,但一切记录都是干净的。对于能重新获取安装包的软件,这是首选。
二,只搬数据不搬程序。 很多软件的体积大头在缓存和数据,不在程序本身。在软件自己的设置里把缓存目录、素材库、项目目录改到 D 盘,程序本体留在 C 盘。这个办法零风险,而且往往能省下更多空间。
三,用 NTFS 压缩。 对那些一年用几次、又不敢搬的软件,直接压缩它的安装目录:
compact /c /s /i /q "C:\Program Files\某软件"能省 30% 到 50%,软件照常运行。
先确认它不在上面那个「必崩」清单里,然后:完全退出软件 → 把安装目录整体剪切到 D 盘 → 用 mklink /D 在原位置建链接 → 启动软件验证 → 试一次更新和一次修复。
最后那步很多人跳过,结果是搬完当时能用,三个月后更新时才崩,那时候已经想不起来是搬家造成的了。
所以动手之前先判断目标软件属于哪一类:带服务和驱动的直接别搬,能搬的也要把符号链接和注册表里的路径记录一起处理掉。手工搬最容易漏的就是那几处注册表记录——安装目录搬走了,卸载程序的路径还指着 C 盘,以后就卸不掉了。另一处常漏的是开机自启项,它记的同样是旧路径,搬完之后每次开机都会静默失败一次,只有事件查看器里才看得到。

那个设计软件最后是重装解决的,授权靠联系厂商解绑重新激活,前后折腾了两天。
事后复盘,那台机器上真正该处理的其实不是这个软件——它虽然 12 GB,但每天都在用。C 盘上还躺着 30 多 GB 的用户文档和 20 GB 的旧系统残留,那两块处理掉根本不用动任何软件。
这也是我对软件搬家的总体看法:它是所有腾空间的手段里风险最高、收益最不确定的一个,应该排在目录迁移、清系统残留、卸载不用的软件这些之后。真轮到它出场的时候,先问一句能不能重装,能重装就别搬。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。