Windows桌面应用程序(1-3-3-3-1st) 注册表映射

[本主题中的信息适用于Windows Server 2008,Windows Vista,Windows Server 2003和Windows XP。从Windows 7和Windows Server 2008 R2开始,WOW64不再使用注册表映射,而是以前共享的映射键。有关更多信息,请参阅受WOW64影响的注册表项

注册表重定向器通过在WOW64上提供注册表某些部分的单独逻辑视图来隔离32位和64位应用程序。但是,某些注册表项的值在32位和64位视图中必须相同。

注册表映射过程在两个注册表视图之间复制注册表项和值以使它们保持同步。每个视图都有一个单独的物理副本,每个反映的注册表项,一个用于32位注册表视图,另一个用于64位注册表视图。

通过调用RegCloseKey关闭键时,将复制映射键。请注意,这会导致可能的竞争条件:如果多个进程更改了映射键,则最后一个RegCloseKey调用将确定键的最终值。

映射器在视图之间复制本地服务器的COM激活数据,但它不复制进程内数据,因为在64位Windows上不允许32/64进程内数据混合。

未对共享注册表项或未重定向的注册表项启用映射。例如,HKEY_LOCAL_MACHINE\System键未启用映射。有关重定向,共享或反映的注册表项列表,请参阅受WOW64影响的注册表项

注册表映射使用“最后一个写入者获胜”策略,如以下示例所示:

  • 在干净安装64位Windows后,将注册64位Wordpad.exe以处理.doc文件。映射器将.doc注册从64位注册表视图复制到32位注册表视图中。
  • 管理员安装32位Office,它注册32位Winword.exe以处理32位注册表视图中的.doc文件。注册表映射器将此信息复制到64位注册表视图中,因此32位和64位应用程序都会为.doc文件启动32位版本的Winword.exe。
  • 管理员安装64位Office,它注册64位Winword.exe以处理64位注册表视图中的.doc文件。注册表映射器将此信息复制到32位注册表中,因此32位和64位应用程序都会为.doc文件启动64位版本的Winword.exe。
    因此,为最近安装的应用程序保留文件关联信息。

对于32位和64位应用程序来说,共享通常写入单独的注册表视图的特定注册表项值非常有用。例如,可以处理来自32位和64位客户端的请求的32位OLE服务器可以使其32位注册表数据可用于系统注册表的64位视图。

当组件在系统注册表中写入数据时,WOW64会在适当时分析信息并在注册表的备用视图中复制数据。通常,此过程在注册表的两个视图中保留相同注册表项的两个单独的物理副本,称为注册表映射或注册表镜像。

类根下的大多数键都属于这一类。更新完成并关闭键的句柄后,将反映对键的更新。在特定情况下,如果密钥具有某种位数依赖性,则不会反映对密钥的写入。例如,32位InprocServer32密钥与64位应用程序无关,因此InprocServer32密钥不会反映到64位注册表视图。但是,64位应用程序可以使用32位LocalServer32密钥并反映LocalServer32密钥。

对于HKEY_LOCAL_MACHINE\Software\Classes\CLSIDHKEY_CURRENT_USER\Software\Classes\CLSID,仅反映未指定InprocServer32或InprocHandler32的CLSID。仅反映LocalServer32 CLSID,因为它们在进程外运行,并且可以由32位或64位应用程序激活。 InProcServer32 CLSID未反映,因为无法在64位进程中加载​​32位DLL,或在32位进程中执行64位DLL。

对于HKEY_LOCAL_MACHINE\Software\Classes\AppidHKEY_CURRENT_USER\Software\Classes\Appid,如果DllSurrogateDllSurrogateExecutable注册表值的值为空字符串,则不会反映这些值。

要禁用和启用特定映射键的注册表映射,请使用RegDisableReflectionKeyRegEnableReflectionKey函数。这些函数不会影响本主题前面的映射键列表中的键。应用程序应仅禁用它们创建的注册表项的映射,而不是尝试禁用预定义键(如HKEY_LOCAL_MACHINEHKEY_CURRENT_USER)的映射。要确定是否已禁用映射列表上的键,请使用RegQueryReflectionKey函数。

不应在事务注册表操作中使用映射的键。 在事务期间写入映射键可能导致事务失败。 有关事务的更多信息,请参阅内核事务管理器

相关话题

注册表重定向器

Windows中的注册表反射

受WOW64影响的注册表项


原文链接:Registry Reflection

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值