Программно редактировать хранилище BCD в Windows 8?

В Windows Vista+ загрузочные данные BCD хранятся в реестре в HKEY_LOCAL_MACHINE\BCD00000000, Инструмент командной строки BCDEDIT просто представляет эти данные в удобочитаемой форме.

Таким образом, теоретически, любое программируемое пользователем приложение, которое запускается от имени администратора, должно иметь возможность редактировать это хранилище так же, как BCDEDIT.EXE, правильно?

DWORD result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("BCD00000000\\Objects\\..."), 0, KEY_SET_VALUE, &hKey);

Тем не менее, когда я запускаю это (под учетной записью администратора), значение результата составляет 0x5 (доступ запрещен).

Есть ли что-то, чего мне здесь не хватает, или просто нет способа написать приложение, которое может программно редактировать данные BCD без вызова BCDEDIT?

1 ответ

Решение

Единственными двумя способами редактирования Windows BCD программно являются:

  1. Скриптинг bcdedit (ненастоящий программный подход)
  2. Использование интерфейса поставщика WCD BCD (специальные функции WMI и объекты для доступа к BCD)

BCD хранится в формате файла реестра, а "системный" BCD сопоставляется с HKLM\BCD00000000.

BCD - это набор объектов (загрузчики / приложения, настройки, объекты устройства).

Редактирование объектов BCD невозможно в общем случае, когда не используются вышеупомянутые методы, потому что структура объектов BCD может быть довольно сложной (например, загрузчик VHD).

Примером инструмента, использующего поставщика BCD WMI программным способом, является Visual BCD Editor - полный редактор BCD (другие инструменты BCD могут редактировать только части BCD и только простые объекты, они не работают на более сложных объектах).

Изучение любого BCD показывает, что наиболее сложными структурами в BCD являются элементы устройства (часть любого загрузчика). Элементы устройства являются настоящими объектами, и редактирование невозможно, если их точная структура не известна или не определены четко определенные функции доступа (от поставщика WMI BCD).

Другие вопросы по тегам