首先,我要说我已经阅读了帖子 这里 而且我仍然遇到麻烦。

我正在尝试使用基于Hive的注册表来创建CE6图像,该注册表实际上通过重新启动来存储结果。

  • 我已经在目录项目中勾选了Hive设置。
  • 在CONCOR.REG中,我将Hive的位置设置为([HKEY_LOCAL_MACHINE init bootvars]“ SystemHive”)“ SystemHive”)为“ Hard Drive Registry”(注意:闪存显示为称为“硬盘驱动器”的设备))
  • concom.reg,我在同一地点设置了“ flags” = dword:3,以使设备管理器与存储管理器一起加载
  • 我已经确认这些设置包裹在“; Hive Boot”部分中

这就是它开始倒塌的地方。这一切都很好地编译了,但是在目标系统上,当它启动时,我会得到:

  • 一个名为“硬盘”注册表的目录,称为“硬盘”
  • 一个名为“硬盘2”的设备,永久闪光灯是
  • 重新启动时,对注册表的任何更改都会丢失

我仍然想念什么?为什么注册表不存储在闪光灯上?

奇怪的是,如果我在注册表目录中创建一个随机文件/目录,它仍在重新启动后仍在那里,因此即使该目录不在另一个分区(我尝试放置)上,它似乎是永久的。如果是永久的,为什么不保存注册表设置(即以太网适配器IP地址?)

我没有使用任何特定的配置文件,因此我对将该蜂巢注册表成为永久商店的最后一步感到茫然。

有帮助吗?

解决方案

首先,我希望您不要更改常见。 您永远不要更改公共代码. 。如果要更改公共注册表密钥,则需要在您的project.reg或Platform.REG中设置它们,它们将覆盖公共设置。

SystemHive 应该设置为要存储Hive文件的目录的名称 没有设备的名称。在您的情况下:"SystemHive"="Registry\\system.hv"
引用 MSDN源:

请勿包括存储文件的文件系统的名称。该系统将根据其他注册表设置确定要使用的文件系统。


有关您的第二个评论的更新(来源):

如果此值在HKEY_LOCAL_MACHINE下存在,则表明系统Hive已成功恢复。如果在HKEY_CURRENT_USER下存在,则表明用户Hive已成功恢复。

您正在冲洗自己的更改吗?
检查您是否没有奇怪的实现 IOCTL_HAL_GET_HIVE_CLEAN_FLAG (来源) - 您的系统可能会返回一个真实值,以清洁每个启动的系统注册表。


您可以添加一个可以定期汇总您注册表的线程(尽管我建议您将其排除在外,并让每个应用程序进行自身更改) - prj_enable_regflush_thread

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top