Windows X64 技术下的重定向机制
来源:互联网 发布:淘宝旗舰店需要多少钱 编辑:程序博客网 时间:2024/06/07 00:57
无论是Windows XP Professional X64 Edition还是Windows Server 2003 X64 Edition(以下把均统称为X64系统),都引入了一项“新”的技术:文件和注册表的重定向。
之所以有这个技术,是为了将32位程序和64位程序分离开。这种在64位平台上运行32位程序的模拟器被称为WOW64。以下是MSDN对WOW64的定义
WOW64 is the x86 emulator that allows 32-bit Windows applications to run on 64-bit Windows.
本文并不关注WOW64的具体的执行细节,但是有一点需要注意的是:文件和注册表的重定向和WOW64的执行方式有很大的关系。
在X64系统里面,一些特殊的目录和特殊的注册表键被分为2个独立的部分。对于文件系统来说,%systemroot%\system32 目录被保留给64位文件使用,而32位文件会被重定向到%systemroot%\SysWOW64目录。换句话说,所有的32位程序一般情况下只会出现在%systemroot%\SysWOW64目录里面。任何32位程序试图访问%systemroot%\system32 目录的企图都会被重定向到%systemroot%\SysWOW64目录。这个是一个默认的行为,除非程序的线程明确的指名需要关闭这种重定向机制。
对于注册表来说,也有类似的内容。
注册表重定向,其实质就是维护两套不同的注册表键,一套用于64位,一套用于32位。受影响的键包括:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER\Software\Classes
HKEY_LOCAL_MACHINE\Software
HKEY_USERS\*\Software\Classes
HKEY_USERS\*_Classes
如前面所述,以上这些键会被维护2套,但是这2套键是如何维护的呢?根据相关文档的说明,维护的方法是采用一种被称为注册表反射的机制完成的。简单的说,当我们在安装Microsoft Office之前打开DOC文档,默认的编辑工具应该是写字板,而且是64位版本的写字板。64位的写字板将注册.doc这个扩展名并把这个扩展名关联到写字板程序,根据X64的运行机制,64位程序修改的是64位的注册表键值,但是WOW64会自动的把这个修改会同步到32位的注册表键下面,这样才能保证关联的正确性。
但是,并不是所有的键值都会受到注册表反射机制的影响。实验证明,如果我们使用32位的注册表编辑器在HKEY_LOCAL_MACHINE\Software下新建一个项,然后使用64位的注册表编辑器查看,会发现这个项只会出现在HKEY_LOCAL_MACHINE\Software\Wow6432Node键下而不会出现在HKEY_LOCAL_MACHINE\Software键下,因为HKEY_LOCAL_MACHINE\Software键是专门用于存放64位程序所使用的注册表数据的,而HKEY_LOCAL_MACHINE\Software\Wow6432Node键是专门用于存放32位程序所使用的注册表数据的。
说了这么多,有点乱了吧,下面来整理一下:
1. X64系统引入了重定向机制来实现32位程序数据和64位程序数据的隔离;
2. 重定向机制可以归结为到文件系统上的重定向和注册表的重定向;
3. 文件系统的重定向目录包括:Program Files和%Systemroot%\System32等常见目录;
4. 受注册表重定向影响的键包括:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER\Software\Classes
HKEY_LOCAL_MACHINE\Software
HKEY_USERS\*\Software\Classes
HKEY_USERS\*_Classes
5. 注册表的重定向机制里面采用了反射机制来保证一些注册表数据在32位试图和64位试图里面都是统一的。
文章转载自网管之家:http://www.bitscn.com/os/windows/200604/4990.html
- Windows X64 技术下的重定向机制
- Windows的消息机制与消息重定向技术
- windows下printf重定向的实现
- windows下printf重定向的实现
- windows下log的重定向输出
- windows环境下重定向运行失败的问题!
- windows的键盘输入重定向
- x64下文件和注册表访问的重定向
- Linux下的重定向
- Linux下的重定向
- x64系统的判断和x64下文件和注册表访问的重定向(1)
- x64系统的判断和x64下文件和注册表访问的重定向(2)
- x64系统的判断和x64下文件和注册表访问的重定向(3)
- x64系统的判断和x64下文件和注册表访问的重定向(1)
- x64系统的判断和x64下文件和注册表访问的重定向(2)
- x64系统的判断和x64下文件和注册表访问的重定向(3)
- printf重定向后的Log机制
- JSP/Servlet的重定向技术综述
- UVA 10029 - Edit Step Ladders
- C#基础与VB基础比较
- 常用正则表达式大全
- 11级_Java_曹建波 02.27 Struts2_第二天
- BMP与IplImage相互转换
- Windows X64 技术下的重定向机制
- hdu_2.1.3_相遇周期
- 百钱百鸡:公鸡5元一只,母鸡3元一只,小鸡1元3只,100元要买100只鸡,共有几种情况
- 简易计算器用js实现的代码
- 线程基础(一)
- prolog初学
- 修改MySQL数据库中root用户的密码的四种方法
- 思想史与科学史上的著名悖论
- 内存溢出之Tomcat内存配置