wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:2410回复:12

关于注册表存储(有10分等着你)

楼主#
更多 发布于:2004-09-14 10:07
PlatformBuilder: Wince.net 4.2
硬件:研华的PCA6772,PCA6751,都是x86平台
外存:CF卡
BSP: CEPC
我在用PB创建平台工程时在平台中已经加入了
(1)FAT File System
(2)CD/UDFS File System
(3)对应的ATAPI PCI/IDE Storage Block Driver
(4)Hive-based Registry
(5)Ram and Rom File System

CE启动后,能看到CF卡。在CE下修改注册表然后调用RegFlushKey()函数,重启机器,CE启来后,发现注册表还是修改前的值?而且在CF卡根目录下根本就没有‘Documents and Settings’目录。
请问各位前辈:我哪地方做的不对?是不是注册表中某个地方设置不对?到底应该怎么设置啊?
 :mad: :( :( :( :(

[编辑 -  9/14/04 by  wwei_wang]
Come on, let us drive the world.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-14 13:28
喔,不好意思,前面没看到你在这儿的描述,如果你有外存了,那么使用regcopyfile可以把你的注册表项写到cf卡上啊。
我看了看RegFlushKey的说明:
When RegFlushKey is called, all previous changes to the registry are committed by flushing data to persistent storage.
好像也有可能你指定一下注册表保存的位置就可以把它保存到cf卡上。

但是,还有一句 The implementation of this function is OEM-dependent.
看来这个也需要低下的一些函数来指定,不知道这个api最终会用oal的哪个函数了。
我觉得你还是用regcoypfile吧,这样可以自己控制保存的位置。
根据地的兄弟们,团结就是力量
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-14 15:35
首先谢谢wxl_50685330,问题是:
(1)如果把注册表项保存到cf卡上,那么当下一次系统启动时,何时以及如何从cf卡上恢复注册表项啊?

(2)其实我也觉得通过修改注册表的保存位置可以把它保存到cf卡上,但我试了几次,没有成功,可能我设的不对,我是这么设置的:
[HKEY_LOCAL_MACHINE\init\BootVars]
   "SYSTEMHIVE"="Documents and Settings\\system.hv"
   "PROFILEDIR"="\\Disk\\Documents and Settings"
这里Disk即为cf卡。
(3)还有,我看了看Using the Hive-Based Registry的说明,上面有关于变量Start DevMgr 的说明: A value of 1 causes the Device Manager to start; 0 keeps the Device Manager from starting. The only case in which the Device Manager should not start is if you want to store the hives in the object store, which causes the hives to be lost on a cold boot. Typically, the hives are stored outside RAM so it is necessary to start the Device Manager.但是,当我把Start DevMgr 设为1时,CE根本就启不来,黑屏,死机,为什么?
[HKEY_LOCAL_MACHINE\init\BootVars]
      "Start DevMgr"=dword:1
Come on, let us drive the world.
bulazhang
驱动牛犊
驱动牛犊
  • 注册日期2002-12-13
  • 最后登录2004-09-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-14 22:03
你从PB的HELP中所看到的,一定是没有问题的
你得到黑屏的结果一般说来是CE不能找到存放Registry的文件系统,这种现象最大的可能性是支持CF卡的ATAPI驱动没有能启动。

你需要去注意; HIVE BOOT SECTION和; END HIVE BOOT SECTION这两个字符串,它们就像括号一样,是告诉PB在这两个字符串中间的注册表信息是用于在CE的Registry Object Store尚未恢复之前的Boot注册表信息,也就是在初始化/恢复Hive之前即Device.exe执行之前的信息。

这样,你就需要将对应的ATAPI驱动的注册表信息用那两个字符串包括起来,这就是的CE启动后首先就加载ATAPI驱动,用于Hive的访问。

RegCopyFile是HIVE的另外一种实现方法,需要CE启动两次才能真正地恢复保存的注册表。

Bula
MSN Messenger: zhangzhiqun@msn.com
--------------------------- Bula, your eFriend MSN: zhangzhiqun@msn.com
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-14 22:34
我大概看了一下你说的这个主题,他说的Load的注册表好像指的是在os编译的时候就写好的内容,我同以上面的兄弟说的,你可能需要在HIVE BOOT SECTION和; END HIVE BOOT SECTION之间先告诉device.exe加载一个你保存了注册表信息的设备,这样在这个设备起来后就可以使用文件系统来访问你保存的注册表了
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-14 22:58
对了,看帮助上面写的,如果你配置了[HKEY_LOCAL_MACHINE\\init\\BootVars]
    "SystemHive"="<your system hive location>"
    "Start DevMgr"=dword:<your value>
,并正确启动了保存待恢复注册表文件的设备后,CE会自动为DefaultUser加载这个文件
根据地的兄弟们,团结就是力量
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-15 09:13
我试试吧,看看行不行!
Come on, let us drive the world.
s3c2410
驱动牛犊
驱动牛犊
  • 注册日期2004-07-02
  • 最后登录2004-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-16 06:54
注册表是可以可以写到flash中,或者cf卡中,但一般都是存在SDRAM中,你要确认你的系统重新启动是硬复位还是软复位,如果是硬复位内存中的数据是被清掉的,即使复位前的程序修改成功了也没用!

www.embeder.com

[编辑 -  9/16/04 by  s3c2410]
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-16 14:15
问题解决了,谢谢各位兄弟的鼎立相助! :P
Come on, let us drive the world.
jim.xu
驱动牛犊
驱动牛犊
  • 注册日期2004-04-13
  • 最后登录2004-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-11-29 14:03
关于注册表保存,请问你是怎么解决的?
我现在也想保存“我的连接”到NAND flash 中,该怎么办?
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-01 09:00
在你所描述的情况中,“我的连接”的配置是位于注册表里吗?如果在注册表里,那肯定可以”自动“保存在flash上。
Come on, let us drive the world.
angeon
禁止发言
禁止发言
  • 注册日期2003-01-09
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1416分
  • 威望7080点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-28 16:41
用户被禁言,该主题自动屏蔽!
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-12-30 13:02
(1);HIVE BOOT SECTION 的前面 “;”,是需要的。
(2)你说“但是机器还是不能启动??????”,什么现象?黑屏吗?如果是黑屏的话,说明cf卡的驱动还没有加载。仔细检查cf卡驱动的注册表部分。
Come on, let us drive the world.
游客

返回顶部