基于 x64 的 Windows 版本中的注册表更改

本文介绍了在基于 x64 的 Microsoft Windows Server 2003 和 Microsoft Windows XP Professional x64 Edition 版本中进行一些注册表更改。 它介绍 Windows x64 Edition 操作系统如何存储 32 位程序和 64 位程序注册表信息。

适用于:   Windows 10 - 所有版本,Windows Server 2012 R2
原始 KB 编号:   896459

摘要

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 若要详细了解如何备份和还原注册表,请单击以下文章编号以查看 Microsoft 知识库中的文章 :322756 如何在 Windows 中备份和还原注册表

运行基于 x64 的版本的 Microsoft Windows Server 2003 或 Microsoft Windows XP Professional x64 Edition 的计算机使用不同的注册表布局来处理 32 位和 64 位程序。 Windows 操作系统的 x64 版本中的注册表布局更改确保不会覆盖程序硬编码.dll路径、程序设置和其他参数值。

为了防止 32 位注册表设置覆盖 64 位注册表设置,运行基于 x64 版本的 Microsoft 的计算机在注册表的新分支中存储 32 位程序设置。 在程序安装过程中,用户不会注意到任何更改。 注册表重定向过程使程序安装和程序配置设置无需用户干预即可访问正确的注册表子项。

在基于 x64 的 Windows 版本上运行的 32 位程序和 64 位程序在不同的模式下运行,并使用注册表中的以下部分:

  • 本机模式 64 位程序在本机模式下运行,并访问存储在以下注册表子项中的项和值:

    HKEY_LOCAL_MACHINE\Software

  • 32 位程序在 WOW64 模式下运行,并访问存储在以下注册表子项中的项和值:

    HKEY_LOCAL_MACHINE\Software\WOW6432node

注册表重定向

为了支持 32 位和 64 位 COM 注册和程序状态共存,WOW64 子系统使用注册表的另一个视图显示 32 位程序。 WOW64 子系统使用注册表重定向来截获位级别的注册表调用。 注册表重定向还可确保将注册表调用定向到注册表中的正确分支。

当你安装新程序或在 Windows x64 Edition 计算机上运行程序时,64 位程序进行的注册表调用无需重定向即可访问注册表 HKEY_LOCAL_MACHINE\Software 子项。 WOW64 截获 32 位程序对 的注册表调用,然后将这些调用重定向到 HKEY_LOCAL_MACHINE\Software HKEY_LOCAL_MACHINE\Software\WOW6432node 子项。 通过仅重定向 32 位程序调用,WOW64 确保程序始终写入相应的注册表子项。 注册表重定向不需要程序代码修改,此过程对用户是透明的。

包含在重定向中的注册表子项

以下注册表子项在当前版本的 Windows x64 Edition 操作系统中重定向:

  • HKEY_LOCAL_MACHINE\Software\Classes
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Ole
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
  • HKEY_LOCAL_MACHINE\Software\Microsoft\COM3
  • HKEY_LOCAL_MACHINE\Software\Microsoft\EventSystem

重要

在更高版本的操作系统中,注册表项重定向可能会更改。 鼓励软件开发人员避免编写基于之前记录重定向密钥列表的程序代码。 相反,应编写代码来验证重定向状态,然后再调用注册表的 32 位或 64 位逻辑视图。

注册表反射

注册表反射提供实时方法,使注册表的 32 位和 64 位部分保持打开状态。 例如,假设有一个名为 Hello.exe 的 32 位程序,该程序充当 32 位 OLE 服务器,但也为来自 64 位客户端的请求提供服务。 注册表反射使 Hello.exe 程序可以保持 32 位注册表和 64 位注册表的打开状态以处理 32 位和 64 位程序调用。

映像使同一注册表的两个物理副本的存在可以支持同时本机和 WOW64 操作。 反映的键大部分是类键。 类键以"最后一个编写器优先"的理念编写,当写入并关闭 32 位或 64 位类键时,将关闭该键的句柄。

以下列表包含"上一个编写器优先"理念的一些示例:

  • 执行 Windows x64 Edition 操作系统的干净安装后,将注册 64 位版本的 Wordpad.exe 以处理.doc文件。 注册表反射器将.doc注册从 64 位注册表部分复制到 32 位注册表部分。
  • 安装 32 位版本的 Microsoft Office 时,Winword.exe注册为处理 32 .doc注册表视图中的 .doc 文件。 注册表反射器将此信息复制到 64 位注册表部分。 因此,32 位和 64 位程序将启动 32 位版本的 Winword.exe 文件.doc文件。
  • 安装 64 位版本的 Microsoft Office 时,64 位版本的 Winword.exe 将注册到 64 位注册表部分中以处理 .doc 文件。 注册表反射器还会将此信息复制到 32 位注册表部分,以便 32 位和 64 位程序启动 Winword.exe 的 64 位版本以用于 .doc 文件。

备注

开发人员可以使用 RegQueryReflectionKey 函数确定特定项的反射状态,并使用 RegDisableReflectionKey 函数和 RegEnableReflectionKey 函数以编程方式禁用和启用特定注册表的反射。

共享注册表项

某些注册表子项包含仅存在于注册表的一个副本中的常量信息,即使这些注册表项同时显示在 32 位和 64 位注册表视图中。 这称为注册表反射。

在当前版本的 Windows x64 Edition 操作系统中,以下注册表子项跨 32 位和 64 位程序共享,并且不会基于程序或进程的 32 位或 64 位级别重写:

  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\SYSTEMCERTIFICATES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CRYPTOGRAPHY\SERVICES
  • HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\HCP
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\ENTERPRISECERTIFICATES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MSMQ
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\NETWORKCARDS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\PROFILELIST
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\PERFLIB
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\PRINT
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\PORTS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\CONTROL PANEL\CURSORS\SCHEMES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\TELEPHONY\LOCATIONS
  • HKEY_LOCAL_MACHINE\SOFTWARE\POLICIES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\GROUP POLICY
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\SETUP\OC MANAGER
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\SOFTWARE\MICROSOFT\SHARED TOOLS\MSINFO
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\SETUP
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CTF\TIP
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CTF\SYSTEMSHARED
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\FONTS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\FONTSUBSTITUTES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\FONTDPI
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\FONTMAPPER
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\RAS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\DRIVER SIGNING
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\NON-DRIVER SIGNING
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CRYPTOGRAPHY\CALAIS\CURRENT
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CRYPTOGRAPHY\CALAIS\READERS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\TIME ZONE
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\TRANSACTION SERVER
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\DFS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\TERMSERVLICENSING

重要

注册表项反射在更高版本的操作系统中可能会更改。 鼓励软件开发人员避免编写基于之前记录反射键列表的程序代码。 相反,应编写代码,以在程序调用注册表的 32 位或 64 位逻辑视图之前验证反射状态。

注册表编辑器更改

32 位和 64 位版本的注册表编辑器均包含在 x64 Edition 操作系统中。 若要更好地了解 Windows x64 Edition 计算机上注册表的 64 位和 32 位程序部分,请使用下列方法之一。

启动 64 位版本的注册表编辑器

  1. 使用具有管理权限的帐户登录到 Windows x64 Edition 计算机。
  2. 单击 "开始",单击"运行",在"打开"框中键入 regedit,然后单击"确定 "。
  3. 在注册表编辑器中,找到并检查以下注册表子项: HKEY_LOCAL_MACHINE\Software\WOW6432node

启动 32 位版本的注册表编辑器

Click Start, click Run, type drive letter where you installed Windows x64 Edition\Windows\syswow64\regedit.exe m in the Open box, and then click OK. m 开关允许你运行注册表编辑器的多个实例。

备注

当您登录到基于 Microsoft Windows Server 2003 Service Pack 1 (SP1) 或更高版本的计算机或基于 Windows x64 Edition 的计算机,并使用远程桌面协议 (RDP) 连接到其他基于 Windows Server 2003 SP1 或更高版本的计算机或基于 Windows x64 Edition 的计算机时,您可以在远程计算机上查看注册表的 64 位部分。 但是,当您登录到尚未升级到 SP1 的 Microsoft Windows Server 2003 计算机或其他任何 32 位 Windows 操作系统时,只能在远程计算机上查看注册表的 32 位部分。

对基于 x64 的 Windows 版本的技术支持

如果你的硬件随已安装的 Windows x64 版本一起提供,你的硬件制造商会为 Windows x64 版本提供技术支持和帮助。 在这种情况下,硬件制造商提供支持,因为 Windows x64 版本包含在硬件中。 硬件制造商可能使用唯一组件自定义了 Windows x64 版本安装。 唯一组件可能包括特定设备驱动程序,也可以包括可选设置以最大化硬件性能。 如果你必须具有 Windows x64 版本的技术帮助,Microsoft 将提供合理的帮助。 但是,您可能必须直接与制造商联系。 您的制造商最有资格支持制造商在硬件上安装的软件。 如果你单独购买了 Windows x64 版本(如 Windows Server 2003 x64 版本),请联系 Microsoft 获得技术支持。