
Начиная с Vista, Windows хранит меню загрузки в хранилище Boot Configuration Data (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
Пути ARC в boot.ini, похоже, исчезли - эта загрузочная запись имеет C:
для идентификации диска, с которого загружается Win7. Но разве буквы дисков не являются произвольными в Windows? Как она узнает, какой физический диск и раздел соответствует C, не заглядывая сначала в реестр?
решение1
BCD на самом деле является кустом реестра, обычно монтируемым в реестре в ключе HKLM\BCD00000000. Вы можете использовать regedit для экспорта этого ключа в виде файла .reg и изучить фактические данные, которые хранит BCD. Формат данных device/osdevice недокументирован и довольно неясен, но вы найдете идентификатор диска, который встречается в таблице разделов, и линейный адрес сектора 1-го сектора рассматриваемого раздела среди этих данных. Буквы дисков Windows используются bcdedit для представления этих данных в предположительно более понятной форме.
решение2
Путь BCD физически не хранится как буква диска. Я возился с консолью восстановления; как только вы меняете букву диска загрузочного раздела и снова вызываете BCDEdit, буква диска волшебным образом меняется и в BCD. Вероятно, это что-то похожее на путь ARC, и BCDEdit абстрагирует это.