-12

Помогите! Меня уволят, если я не смогу понять, как это сделать к завтрашнему дню.

Microsoft Windows хранит свои базы данных реестра (известные как "кусты реестра", на самом деле существует предыстория происхождения этого имени, но я отступаю) в собственном двоичном формате.

Ответьте правильно или вы потеряете работу:

  1. Пусть H-sub-A будет кустом реестра компьютера A, а H-sub-B - кустом реестра компьютера B.

  2. Создайте куст реестра H-sub-A-prime (в собственном двоичном формате), который содержит все ключи реестра и значения как в H-sub-A, так и в H-sub-B. Если есть перекрытие, пусть значение из H-sub-B перезаписывает значение в H-sub-A.

  3. Конечно, вы можете импортировать текстовый файл исправлений (например, «FOO.REG»), чтобы изменить реестр, но можете ли вы объединить два куста реестра в их собственном двоичном формате?

Ответы, связанные с экспортом реестра в текстовый файл (например, «FOO.REG»), не будут засчитаны. Вы можете использовать только программное обеспечение, прилагаемое к Microsoft Windows (любой версии), и / или сторонние инструменты, которые предоставляются бесплатно.

2 ответа2

9

Вы можете объединить эти ульи, загрузив их во временный ключ в самом реестре и скопировав один куст поверх другого, используя команду reg .

Учитывая характер вопроса, учтите, что я не несу ответственности за любой ущерб, который может возникнуть в результате использования этого ответа. Для получения дополнительной информации см. Условия обслуживания сети Stack Exchange.

Я сам проверил эти команды на компьютере с Windows 7, используя фиктивные данные, не изменяя существующие данные в реестре, поэтому они должны работать. Я предполагаю, что файлы кустов реестра предоставлены вам; в противном случае вам, вероятно, понадобится получить их, загрузившись с живого компакт-диска Linux и загрузив файлы с жестких дисков компьютера. Я не мог экспортировать их в работающую систему через reg save в командной строке с повышенными правами, получая чуть больше ошибок Access is denied .

Если кусты поставляются в виде более одного файла на компьютер, и они должны работать как единое целое, вам необходимо загрузить и объединить их в реестре, используя те же методы, которые обсуждались ниже, на ключах, соответствующих компьютер, с которого получены файлы кустов, перед копированием полных ульев компьютера B на компьютеры А. В противном случае вы можете объединить каждый улей по отдельности, используя следующую процедуру.

  • Предположим, что куст H A хранится в файле Ha.hiv а куст H B - в файле Hb.hiv . Начнем с создания ключа HKLM\Temp с помощью редактора реестра, а затем загрузить H A и H B в этот временный ключ на любом компьютере , используя эти команды в командной строке с повышенными:

    reg load HKLM\Temp\Ha Ha.hiv
    reg load HKLM\Temp\Hb Hb.hiv
    
  • Скопируйте содержимое H B в H A, перезаписав все существующие ключи и значения:

    reg copy HKLM\Temp\Hb HKLM\Temp\Ha /s /f
    
  • Выгрузите файлы кустов реестра с помощью редактора реестра, выбрав ключ Ha , выбрав « Выгрузить куст» в меню « Файл» , и повторите то же самое для Hb . Затем вы можете удалить временный ключ HKLM\Temp . (reg unload не будет работать; я попробовал это сам и получил Access is denied , но я смог сделать это через редактор реестра.)

  • Объединенный улей H A 'теперь хранится в Ha.hiv .

Для получения дополнительной информации о команде reg см. Http://technet.microsoft.com/en-us/library/cc732643.aspx.

1

Операции реестра фактически являются частью, по крайней мере, базовых библиотек Windows, если не самого ядра NT.

Единственный официальный способ объединения ключей в ульи на двоичном уровне лежит там. Насколько мне известно, Microsoft не обнародовала информацию о том, как это работает. Любая такая документация, на мой взгляд, является результатом обратного проектирования.

И действительно глупо полагаться на двоичный формат реестра, чтобы выполнить что-то, что может быть сделано без знания деталей реализации, поскольку Microsoft может изменить или полностью изменить формат в любое время, так как она имеет исключительный контроль над форматом.

Вероятно, существует много сторонних инструментов, которые манипулируют реестром. Я бы не стал полагаться на них, кроме как в отчаянной ситуации (например, при изменении пароля локального администратора, если у вас нет другого выхода в систему), экспериментах или если вы знаете, что ваше программное обеспечение на 100% связано с определенной версией Windows - просто потому из-за того, что вы не знаете, что Microsoft будет делать с проприетарным форматом в будущем. Microsoft предоставляет независимые от реализации API-интерфейсы реестра по определенной причине.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .