2013-06-12 8 views
1

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

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

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

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

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

ответ

3

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

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

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

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

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

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

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