Реестр на основе кустов во Flash - PullRequest
1 голос
/ 23 апреля 2010

Для начала скажу, что я прочитал пост здесь и у меня все еще проблемы.

Я пытаюсь создать образ CE6 с реестром на основе улья, который фактически сохраняет результаты при перезагрузке.

  • Я отмечал настройки улья в элементах каталога.
  • В common.reg я установил местоположение улья ([HKEY_LOCAL_MACHINE \ init \ BootVars] «SystemHive») в «Жесткий диск \ Реестр» (Примечание: флэш-память отображается как устройство под названием «Жесткий диск» «)
  • В common.reg я установил «Flags» = dword: 3 в том же месте, чтобы загрузить диспетчер устройств вместе с менеджером хранилища
  • Я подтвердил, что эти настройки заключены в "; РАЗДЕЛ BOOT HIVE"

Это то место, где оно начинает падать. Все отлично компилируется, но в целевой системе при загрузке я получаю:

  • Каталог, называемый «Жесткий диск», куда помещается реестр
  • Устройство с именем «Hard Disk2», где постоянная флеш-память
  • Любые изменения, внесенные в реестр, теряются при перезагрузке

Что мне все еще не хватает? Почему реестр не хранится на флэш-памяти?

Как ни странно, если я создаю случайный файл / каталог в каталоге реестра, он все равно остается там после перезагрузки, поэтому, хотя этот каталог отсутствует в другом разделе (где я пытался его поместить), он все же появляется быть постоянным Если он постоянный, почему настройки реестра не сохраняются (например, IP-адреса адаптера Ethernet?)

Я не использую какие-либо конкретные профили, поэтому я не знаю, каким будет последний шаг, чтобы сделать этот реестр кустов постоянным хранилищем.

1 Ответ

1 голос
/ 25 апреля 2010

Во-первых, я надеюсь, что вы не меняете common.reg напрямую. Вы никогда не должны изменять публичный код .Если вы хотите изменить открытые ключи реестра, вам нужно установить их в вашем project.reg или platform.reg, и они переопределят общие настройки.

SystemHive должно быть установлено на имя каталога, к которому вы обращаетесь.хотите хранить файлы кустов без названия устройства .В вашем случае: "SystemHive"="Registry\\system.hv"
Цитата из MSDN-источника :

Не включайте имя файловой системы, в которой хранится файл.Система определит, какую файловую систему использовать, основываясь на других параметрах реестра.


Обновление относительно вашего второго комментария ( источник ):

Если это значение присутствует в HKEY_LOCAL_MACHINE, это означает, что куст системы был успешно восстановлен.Если он присутствует в HKEY_CURRENT_USER, это означает, что улей пользователя был успешно восстановлен.

Вы сбрасываете сделанные вами изменения?
Убедитесь, что у вас нет странной реализации IOCTL_HAL_GET_HIVE_CLEAN_FLAG ( source ) - ваша система может возвращать истинное значение для очистки системного реестра при каждой загрузке.


Вы можете добавить поток, который будет периодически очищать ваш реестр (хотя ярекомендую исключить его и позволить каждому приложению сбрасывать свои собственные изменения) - PRJ_ENABLE_REGFLUSH_THREAD

...