给 C 盘勾了「压缩此驱动器以节约磁盘空间」,重启后黑屏,白字一行 BOOTMGR is compressed,下面提示按 Ctrl+Alt+Del 重启。按了没反应,再开机还是这行。引导文件没坏,是引导管理器自己被 NTFS 压缩了,老版本的 bootmgr 读不了压缩过的自己。
先别急着重装,进 PE 或修复模式
用 U 盘启动进 PE,或者开机连按 F8 进「修复计算机」再选命令提示符。目标是拿到一个能读写系统盘的环境。进去先确认盘符,PE 里系统盘常常不叫 C,用 diskpart 的 list volume 看一眼再动手,用错了盘会白忙。
把 bootmgr 的压缩属性去掉
bootmgr 在系统盘根目录,是隐藏加系统属性的文件。先看状态再去压缩,两条命令分两次执行:
attrib C:/bootmgrcompact /u C:/bootmgrattrib 输出里带 C 就是压缩,H 是隐藏,S 是系统。compact 执行完再查一次,C 消失了就成了。提示找不到文件就换盘符,比如 D:/bootmgr。
整盘都压过的情况
有人是在资源管理器里右键磁盘属性勾的压缩,那 bootmgr、boot 目录里的文件、winload.exe 全被压了。只解 bootmgr 常常还是起不来,因为 winload 同样读不了压缩的自己。稳妥的做法是在 PE 里对整个系统盘取消压缩:
compact /u /s:C: /i /f这一步耗时长,装满的硬盘要跑十几分钟,中途别断电。/i 忽略错误继续往下走,/f 强制处理。跑完再执行 bootrec /fixboot 重建引导扇区,多数机器就能进系统。
进系统后把压缩彻底关掉
用管理员命令提示符先查一遍还有没有残留:compact /q /s:C:。确认干净了,去磁盘属性里把「压缩此驱动器」的勾去掉,否则下次大版本更新、系统迁移又会把引导文件压回去。固态盘开 NTFS 压缩本来收益就小,还多耗 CPU。
什么时候不该继续折腾
只加过压缩、别的没动过的机器,上面几步十几分钟能解决。要是同时改过分区、动过 bcd,报错往往从 compressed 变成 BOOTMGR is missing,那就得用 bcdboot C:/Windows /s C: /f BIOS 重建引导。数据在别的分区先备份,救引导的时候最容易顺手把分区表搞乱。