Одним словом: разрешения.
Разрабатывать ...
Место нахождения
BCD хранится на загрузочном диске (обычно том NTFS ~ 100 МБ). По умолчанию он скрыт, но вы можете назначить ему букву диска с помощью оснастки MMC «Управление дисками» (diskmgmt.msc
). Затем вы можете заглянуть в каталог Boot
и увидеть файл BCD
который является обычным файлом формата реестра-куста, который содержит данные конфигурации загрузки.
обоснование
Очевидно, что загрузочные данные очень чувствительны и являются первой линией сбоя. Неправильное исправление системных файлов может быть исправлено относительно легко, но для этого нужно что-то запустить. Если загрузочные файлы испорчены, то ничего не запустится, и он погаснет. (Ну, это все еще можно исправить, но не автоматически; для этого потребуется целенаправленное ручное вмешательство, например использование загрузочного или установочного диска.)
Так как загрузочные данные очень важны, Windows не позволяет легко возиться там. Использование редактора реестра для непосредственного редактирования загрузочных данных позволит установить недопустимые или конфликтующие значения, добавить недопустимые или недопустимые записи, удалить обязательные записи и т.д. Ограничение изменения BCD для bcdedit
позволяет ограничивать изменения действительными значениями, которые помогает ограничить ущерб, который может быть нанесен (он не полностью устраняет проблемы; вы все равно можете убить систему, но, по крайней мере, он устраняет большую часть возможных проблем).
метод
Если вы изучите разрешения для ветви BCD00000000
, то увидите, что для учетной записи SYSTEM для нее установлен Full Control
доступ, но у группы администраторов есть Special
права доступа, доступные только для Read-Only
и WriteDac
которые предоставляют возможность устанавливать разрешения. (Возможно, вам придется нажать кнопку [Advanced]
, потому что в основном диалоговом окне указано, что SYSTEM также имеет Special
доступ, но в диалоговом окне « Дополнительные параметры безопасности » для него правильно установлено значение « Full Control
доступ».)
Когда вы запускаете Regedit (который требует повышенных привилегий), он запускается в контексте вашей учетной записи пользователя и получает разрешения группы администраторов, поэтому вы не можете писать в него. Когда вы используете команду bcdedit
, она запускается в контексте учетной записи SYSTEM, которая имеет права на запись. Если вы включите столбец « Имя пользователя» в диспетчере задач, то увидите, что Regedit запускается вашей учетной записью, а bcdedit
- SYSTEM.
Обходные
Прямое редактирование BCD с помощью Regedit нежелательно и редко, но если это действительно необходимо, то один из способов - предоставить себе доступ на запись к ветви BCD00000000
. Конечно, это не рекомендуется, потому что вы должны помнить, чтобы отозвать разрешение позже. Более простой способ - просто запустить Regedit в контексте SYSTEM .