从 Vista 开始,Windows 将启动菜单存储在启动配置数据存储 (BCD) 中。我今天查看了我的启动菜单,这是唯一一个 Win7 实例的条目:
Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale en-US
inherit {bootloadersettings}
recoverysequence {89491629-36d4-11df-938c-f89ebe5d401b}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {89491621-36d4-11df-938c-f89ebe5d401b}
nx OptIn
看来 boot.ini 的 ARC 路径已经消失了 - 此启动项有一个C:
用于标识要从中加载 Win7 的驱动器。但 Windows 中的驱动器号不是任意的吗?它如何在不先查看注册表的情况下知道哪个物理驱动器和分区对应于 C?
答案1
BCD 实际上是注册表配置单元,通常安装在注册表中的 HKLM\BCD00000000 项下。您可以使用 regedit 将该项导出为 .reg 文件,并检查 BCD 存储的实际数据。设备/操作系统设备数据的格式没有记录且相当模糊,但您会在这些数据中找到分区表中出现的磁盘 ID,以及相关分区第一个扇区的线性扇区地址。bcdedit 使用 Windows 驱动器号以可能更易于理解的方式呈现该数据。
答案2
BCD 中的路径并非以驱动器号的形式物理存储。我一直在摆弄修复控制台;一旦您更改启动分区的驱动器号并再次调用 BCDEdit,驱动器号也会神奇地以 BCD 形式更改。它可能类似于 ARC 路径,BCDEdit 会将其抽象化。