您的位置:首页 > 其它

基于HIVE注册表初始化(Windows CE 5.0)

2013-11-25 23:38 183 查看
声明:本人英语有限,翻译只是为了自己的理解方便。

下列步骤显示了FileSys.exe使用基于hive注册表的初始化过程。

1.FileSys.exe 调用OEMIoControl带IOCTL_HAL_GETREGSECUREKEYS参数 2次。 首先调用的是一个查询,找出所需要的数据缓冲区的大小。第二个调用是一个查询来获取安全密钥数据的缓冲区。欲了解更多信息,请参见Requesting Additional Secure Registry Keys 。

2.FileSys.exe从ROM装入引导HIVE(Boot.hv)。 这个引导HIVE包含 FileSys.exe需要确定注册表被存储在那里和启动驱动程序是需要来访问它 的信息。

3.FileSys.exe 调用OEMIoControl带 IOCTL_HAL_INITREGISTRY ,来给OAL一个机会提前将数据添加到注册表,在启动过程中。

4.FileSys.exe 创造被命名的事件它们在引导HIVE的 HKEY_LOCAL_MACHINE\SYSTEM\EVENTS 注册表位置中,这些事件都是由他们自己的进程设置。 欲了解更多信息,请参阅 Ready-Event Registration 。

5.FileSys.exe加载存储管理器,如果HKEY_LOCAL_MACHINE\System\StorageManager指向一个可加载的DLL。 FileSys.exe创建一个线程来初始化存储管理器。 该线程将退出,当初始化完成后。

6.如果标志值设置为1或4,FileSys.exe启动引导阶段0。 如需启动阶段的详细信息,请参阅 Boot Phases 。

7.系统区域设置被初始化。

8.如果标志值设置为1或4,FileSys.exe 启动引导阶段1。 如需启动阶段的详细信息,请参阅 Boot Phases 。

9.如果标志值设置为2或8,FileSys.exe启动Device.exe。

10. FileSys.exe创建一个名为“SYSTEM/BootPhase2”的事件,这是文件系统加载包含系统注册表时被触发。 对于Windows CE早些时候,5.0版本,这个文件系统是确定的"MountFlags"=2位掩码中的存储管理器配置文件。为Windows CE 5.0及更高版本,该文件系统是由确定的"MountAsBootable"=dword:1在存储管理器配置文件。

11.FileSys.exe等待文件系统注册一个HIVE注册表的存储位置。

12.如果hive注册表没有被存储在文件系统中,FileSys.exe调用OEMIoControl带 IOCTL_HAL_GET_HIVE_RAM_REGION来找出,如果注册表数据被存储在RAM中的保留区。

13.FileSys.exe 加载系统注册表的ROM部分,Default.hv。

14.FileSys.exe 调用OEMIoControl带 IOCTL_HAL_GET_HIVE_CLEAN_FLAG和HIVECLEANFLAG_SYSTEM标志来确定OAL是否表明该系统HIVE应进行清洗和从ROM中的数据重新创建。

15..如果不需要一个干净的注册表,系统注册表HIVE文件(System.hv)由包含它的文件系统加载。 在系统hive文件中的签名是在系统注册表中的ROM部分核对签名。 如果签名不匹配,那么一个干净的注册表是必需的,即使这不是由IOCTL_HAL_GET_HIVE_CLEAN_FLAG指示的。

16.如果一个干净的注册表是需要的,旧的注册表HIVE文件将被删除,并创建一个新的HIVE文件。

17.FileSys.exe 换出启动hive注册表之前,任何当前打开系统注册表句柄无效。

18.FileSys.exe迁移从启动注册表HIVE到系统hive的改变。

19.如果引导是不干净启动,FileSys.exe设置HKEY_LOCAL_MACHINE下RegPersisted 注册表值为1。 在这一点上,非用户特定注册表数据变得可用。

20. FileSys.exe决定了用户配置文件保存在那里的,通过查看 HKEY_LOCAL_MACHINE\init\BootVars 下的注册表值ProfileDir。

21.FileSys.exe 调用OEMIoControl使用IOCTL_HAL_GET_HIVE_CLEAN_FLAG和HIVECLEANFLAG_USERS标志,以确定OAL是否表明用户配置应被清洗。 如果是这样,所有的用户配置文件的目录被删除,以及它们的内容。

22.FileSys.exe决定是否载入默认用户配置文件。 如果在 HKEY_LOCAL_MACHINE\init\BootVars 下的注册表值NoDefaultUser设置为1,则调用SetCurrentUser需要加载用户配置文件。 如果NoDefaultUser设置为0,则默认用户配置文件被加载。

默认的用户名是由DefaultUser,REG_SZ的值决定,在 HKEY_LOCAL_MACHINE\init\BootVars。 在系统引导时该DefaultUser使用用户的名称作为默认的配置。 如果是现有的用户,相应的用户hive被加载。 如果它是一个新的用户,用户配置可以被创建。 如果DefaultUser没有被设置,由用户名称 "default" 被加载。 你可以选择一个默认的用户名用下面的注册表项。

[HKEY_LOCAL_MACHINE\init\BootVars]

"DefaultUser"=<username>

23.当FileSys.exe加载用户注册表,它会执行以下操作:

从ROM中的User.hv文件挂载用户注册表配置的ROM部分。

1.从永久文件系统上的用户配置文件目录中User.hv文件挂载用户注册表配置的剩余部分。

2.在用户配置文件签名是在用户注册表中的ROM部分核对签名。 如果签名不匹配,再用干净的注册表是必需的。 在用户配置目录的User.hv文件将被删除,并创建一个新的配置文件。 在用户配置文件目录中没有其他文件会受到影响。

3.如果用户注册表不干净,FileSys.exe中设置HKEY_CURRENT_USER下RegPersisted 注册表值为1。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: