您的位置:首页 > 其它

(转)移植32位程序64位系统

2009-10-19 17:17 316 查看
64个系统已经为32位的应用程序准备了运行32位程序的环境,这个环境就是WOW64的。

 WOW64 是Windows -32-on-Windows-64 的缩写。它为现有的 32 位应用程序提供了 32 位的模拟,可以使大多数 32 位应用程序在无需修改的情况下运行在 Windows 64 位版本上。它类似于旧的 WOW32 子系统 ,负责在 Windows 32 位版本下运行 16 位的代码 。 WOW64的是视窗 - 32上的Windows - 64的缩写。它为现有的32位应用程序提供了32位的模拟,可以使大多数32位应用程序在无需修改的情况下运行在64位版本的Windows上。鐗类似于旧的WOW32 子系统 ,负责在的Windows 32位版本下运行16位的代码 。

64 位版本 Windows 中的注册表分为 32 位注册表项和 64 位注册表项。许多 32 位注册表项与其相应的 64 位注册表项同名,反之亦然。

64 位版本 Windows 包含的默认 64 位版本注册表编辑器 (Regedit.exe) 可显示 64 位和 32 位的 注册表项。WOW64 注册表重定向器为 32 位程序提供了对应于 32 位程序注册表项的不同注册表项。在 64 位版本的注册表编辑器中,32 位注册表项显示在以下注册表项下:

HKEY_LOCAL_MACHINE/Software/WOW6432Node
使用默认的 64 位版本注册表编辑器,可以查看或编辑 64 位和 32 位的注册表项和项值。要查看或编辑 64 位注册表项,必须使用 64 位版本的注册表编辑器 (Regedit.exe)。还可以使用 %systemroot%/Syswow64 文件夹中的 32 位版本注册表编辑器查看或编辑 32 位注册表项和项值。在 32 位版本注册表编辑器中执行任务的方式与 64 位版本注册表编辑器没有区别。要打开 32 位版本的注册表编辑器,请按照下列步骤操作:

单击“开始”,然后单击“运行”。

在“打开”框中,键入 %systemroot%/syswow64/regedit,然后单击“确定”。

注意:除非使用 -m 开关启动注册表编辑器的第二个实例,否则,必须先关闭 64 位版本的注册表编辑器,然后才能打开 32 位版本的注册表编辑器(反之亦然)。例如,如果 64 位版本的注册表编辑器已经在运行,在第 2 步键入 %systemroot%/syswow64/regedit -m 可启动 32 位版本的注册表编辑器。

为了支持 32 位和 64 位 COM 注册和程序状态的共存,WOW64 为 32 位程序提供了一种备用注册表视图。32 位程序会看到与真正的 64 位 HKEY_LOCAL_MACHINE/Software 树完全分开的 32 位 HKEY_LOCAL_MACHINE/Software 树 (HKEY_LOCAL_MACHINE/Software/WOW6432Node)。这样可以隔离 HKEY_CLASSES_ROOT,因为此树的每个计算机部分驻留在以下注册表项内:

HKEY_LOCAL_MACHINE/Software
为了通过 COM 和其他机制实现 64 位/32 位程序互操作性,WOW64 使用了一个“注册表反射器”来在 64 位注册表视图和 32 位注册表视图之间镜像某些注册表项和项值。该反射器是“智能”的,因为它只反射 COM 激活数据。

反射的注册表项

WOW64 注册表反射器可能会在反射过程中修改注册表项的内容和项值,目的是为了调整路径名等。因此,32 位的内容与 64 位的内容可能会有所不同。下面的注册表项会被反射:

HKEY_LOCAL_MACHINE/Software/Classes

HKEY_LOCAL_MACHINE/Software/COM3

HKEY_LOCAL_MACHINE/Software/Ole

HKEY_LOCAL_MACHINE/Software/EventSystem

HKEY_LOCAL_MACHINE/Software/RPC
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: