Файл реестра Windows отредактирован двумя разными инструментами, разные результаты

Файл реестра Windows отредактирован двумя разными инструментами, разные результаты

Я пробую два разных инструмента для редактирования и удаления всех узлов из куста реестра Windows:

  • chntpwкоторый изначально был разработан для редактирования файлов паролей (SAM), но теперь имеет интерактивную оболочку для редактирования файлов реестра.

  • hivexкоторая является более современной и в первую очередь предназначена для редактирования реестра общего назначения.

Чтобы иметь представление о различиях между этими программами, я взял свой BCD-файл (который используется диспетчером загрузки Windows) и использовал обе эти программы для удаления всех узлов.

Как и ожидалось, полученные файлы имеют одинаковый размер, но не идентичны. Когда я открыл каждый из них с помощью hivexили chntpw, оба редактора показали 0 узлов для обоих файлов.

Однако когда я открываю hivexфайл, который предположительно имеет 0 узлов, я вижу оставшиеся данные от его предыдущего состояния.

Напротив, chntpwрезультат не содержит никаких остаточных данных от узлов.

Сейчас я изучаю формат файла реестра, поэтому должен спросить:

Если бы я использовал один, какой из них мне выбрать? Очевидно, я хочу максимально реалистично смоделировать поведение парсера/писателя Microsoft (я хочу иметь возможность обмануть их). Так имеют ли оставшиеся данные какое-либо значение; выдаст ли диспетчер загрузки Windows какие-либо ошибки, если я использую его hivexдля создания поддельного файла BCD?

PS: Вопрос не зависит от моей основной цели, которая, я надеюсь, была ясна: я хочу исправить/создать файл BCD (Boot Config Data) без использования официального установщика Windows. Так что если у вас есть какие-либо советы в этом направлении, не стесняйтесь давать.

решение1

Hivex специально разработан для того, чтобы не удалять старые данные из файла. Это важная цель, поскольку формат куста реестра недокументирован, и никто, кроме MSFT, не понимает, как он работает, а мы не хотим уничтожать данные в процессе внесения изменений.

Обратите внимание, это делаетнетозначает, что hivex не может удалять узлы. Вы можете удалять узлы через API, и эти узлы не будут видны обычным вызовам реестра Windows, но никакие данные не будут очищены/удалены/обрезаны из базового файла.

Если вам нужен пустой файл куста, я предлагаю начать с пустого файла куста. В исходном коде hivex есть пустой файл куста (называемый 'minimal'), который вы можете использовать.

Связанный контент