`
lixinlixin2008
  • 浏览: 149786 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

WOW64:文件和注册表的重定向

    博客分类:
  • vc
阅读更多

原文:

注册表重定向    http://blog.csdn.net/is2120/article/details/7246334

 

 

32位程序读取64位注册表   http://bbs.eyuyan.com/read.php?tid=261750

 

 

注册表重定向解决办法:

 

32位程序如何访问64位的注册表(HKLM/Software)

Ø         在调用函数RegCreateKeyEx创建注册表项时,对其第六个参数REGSAM  samDesired设置中添加参数KEY_WOW64_64KEY,这样可以实现对64位注册表的访问;

Ø         在调用函数RegOpenKeyEx打开注册表项时,要对其第四个参数REGSAM  samDesired设置中添加参数KEY_WOW64_64KEY,这样可以实现对64位注册表的访问;

 

64位程序如何访问32位的注册表(HKLM/Software/Wow6432Node)

Ø         在调用函数RegCreateKeyEx创建注册表项时,对其第六个参数REGSAM  samDesired设置中添加参数KEY_WOW32_64KEY,这样可以实现对32位注册表的访问;

Ø         在调用函数RegOpenKeyEx打开注册表项时,要对其第四个参数REGSAM  samDesired设置中添加参数KEY_WOW32_64KEY,这样可以实现对32位注册表的访问;

 

 

 

文件重定向解决办法:

 

我们可以调用相关的API来关闭和打开这种转向。常用的函数有3个,Wow64DisableWow64FsRedirection(关闭系统转向),Wow64RevertWow64FsRedirection(打开系统转向),Wow64EnableWow64FsRedirection(打 开系统转向)。但是Wow64EnableWow64FsRedirection在嵌套使用的时候不可靠,所以通常用上面的 Wow64RevertWow64FsRedirection来打开文件系统转向功能。

 

下面简单讲讲为何会发生注册表和文件重定向:

____________________________________________________________

_____________________________________________________________

 

 

 

 

对于64位应用程序,其 文件通常被放在%windir%\system32和%programfiles%(比如:c:\program files)。对于32位应用程序,其文件通常在%windir%\syswow64和C:\program files (x86)下面。如果我们用32位程序去访问%windir%\system32,不管我们用硬编码还是其它的方式,系统都会自动地给我们转向 到%windir%\syswow64下面。这种转向对于每个32位应用程序默认都是打开的。但是这种转向对于我们来说并不总是需要的。那么我们可以调用相关的API来关闭和打开这种转向。常用的函数有3个,Wow64DisableWow64FsRedirection(关闭系统转向),Wow64RevertWow64FsRedirection(打开系统转向),Wow64EnableWow64FsRedirection(打 开系统转向)。但是Wow64EnableWow64FsRedirection在嵌套使用的时候不可靠,所以通常用上面的 Wow64RevertWow64FsRedirection来打开文件系统转向功能。


        为了防止注册表键冲突,注册表在某些键也分成了两个部分。一部分是专门给64位系统访问的,另一部分是专门给32位系统访问的,放在Wow6432Node下面。当32位程序去访问某些键值的时候,和文件转向类似,系统也会自动地把程序的访问转向到Wow6432Node下面。Wow6432Node这个节 点存在于HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER下面。如果我们希望关闭这个转向的话,可以通过上面的Wow64DisableWow64FsRedirection和RegOpenKeyEx方法办到。

 

 

_________________________________________________

_________________________________________________

 

 

无论是Windows XP Professional X64 Edition、Windows Server 2003X64 Edition还是Windows Vista X64 Edition(以下把均统称为X64系统),都引入了一项技术:文件和注册表的重定向。

 

 //z 2012-2-9 17:40:19 IS2120@CSDN

之所以有这个技术,是为了将32位程序和64位程序分离开。这种在64位平台上运行32位程序的模拟器被称为WOW64。WOW64是"Windows 32 on Windows 64"的简称,它在系统层中另提供了一层,以支持老式的32位程序。

 在X64系统里面,一些特殊的目录和特殊的注册表键被分为2个独立的部分。对于文件系统来说,%systemroot%/system32 目录被保留给64位文件使用,而32位文件会被重定向到%systemroot%/SysWOW64目录。换句话说,所有的32位程序一般情况下只会出现在%systemroot%/SysWOW64目录里面。任何32位程序试图访问%systemroot%/system32 目录的企图都会被重定向到%systemroot%/SysWOW64目录。这个是一个默认的行为,除非程序的线程明确的指名需要关闭这种重定向机制。

 

 //z 2012-2-9 17:40:19 IS2120@CSDN

对于注册表来说,也有类似的内容。WOW64子系统也提供了对注册表访问的重定向。如果是32位程序,对注册表的操作不论是读还是写, WOW64都将会截取对HKLM/Software访问,并重定向到HKLM/Software/Wow6432Node(即32位应用程序的注册信息被写在HKLM/Software/Wow6432Node中,而不是预期的HKLM/Software中);如果是64位程序,就直接到 HKLM/Software。

需要重定向的注册表项

注册表重定向,其实质就是维护两套不同的注册表键,一套用于64位,一套用于32位。受影响的键不只是上面提及的HKLM/Software,还包括:
        HKEY_CLASSES_ROOT 
        HKEY_CURRENT_USER/Software/Classes 
        HKEY_LOCAL_MACHINE/Software 
        HKEY_USERS/*/Software/Classes 
        HKEY_USERS/*_Classes
    其中,64位程序的注册信息存储在上面的健中,32位程序的注册信息重定向存储在下列健中:

HKEY_CLASSES_ROOT/WOW6432node 
        HKEY_CURRENT_USER/Software/Classes/WOW6432node 
       HKEY_LOCAL_MACHINE/Software/WOW6432node 
       HKEY_USERS/*/Software/Classes/WOW6432node 
        HKEY_USERS/*_Classes/WOW6432node

 //z 2012-2-9 17:40:19 IS2120@CSDN

当运行32位程序,wow64会截取程序对注册表HKLM/Software的访问,并重定向于HKLM/Software/Wow6432Node。

 

 

分享到:
评论

相关推荐

    易语言读取64位注册表

    易语言读取64位注册表源码,读取64位注册表,读取32位注册表键值,读取64位注册表键值,API_Wow64DisableWow64FsRedirection,API_Wow64RevertWow64FsRedirection,API_RegOpenKeyEx,API_RegQueryValueEx,API_...

    32位程序读取64位机器注册表

    64位机器的注册表和程序库有两份,一份是给64位准备的,一份是给32位的程序准备的,默认情况下32位程序读取的只能是给32位程序准备的那份注册表,而要使用32位程序读取在64位机器上安装的64位程序,请下载资源自己看...

    LabVIEW Run Time Engine核心支持文件和注册表文件

    新版LabVIEW生成的可执行程序如果想在没有RTE环境的计算机上运行,需要把LabVIEW Run-Time下对应版本的文件夹连同可执行程序一起拷贝,同时把SysWOW64拷贝到windows/Sys WOW64文件夹下才可以使用。注册表文件是用来...

    rewolf.wow64ext.v1.0.0.4

    rewolf.wow64ext.v1.0.0.4

    regbackup64:解决“ ERUNT”缺点的注册表备份工具

    regbackup64 ... 尽管您可以使用“ ERUNT”注册表备份工具来执行在常规系统中运行它的注册表备份,但是由于RE缺少WoW64运行时,因此不支持它的执行,因此在RE中运行时不能使用它来还原备份。 32位“ ERUNT”。

    WeChat.Patch.20201120(防止测回).exe

    微信防止测回补丁

    Delphi_2007_2009_WOW64_Debugger_Fix.zip

    borland 64 软件调试出错. 解决Assertion failure: (!SetThreadContext failed) in ..\win32src\thread32.cpp 问题

    WoW-Spell-Editor 魔兽世界3.3.5a版本dbc文件编辑器

    .NET FrameWork 4.8 已经对Github上的最新版本进行调整,可以无错运行导入Spell App.Config配置数据链接及新建数据库名称 ...运行,选择Mysql,顶端选择 Import 按钮,将会把Wow所有dbc文件导入mysql数据库!

    wowapi:对魔兽世界 API 的调用和演示的集合

    安装npm install wowapi --save用法var wowapi = require('wowapi') 声誉 = wowapi.wowRep(player,server); console.log('rep', 声誉);杂项如果您有兴趣自行访问 WoW API,这里有一个演示 URL: : 发布历史0.0.1 ...

    reg_hunter:Blueteam操作分流注册表狩猎取证工具

    reg_hunter Blueteam操作分类检查注册表搜寻/取证... 请注意,您将要在64位OS上运行64位二进制文​​件,以便Windows WOW64重定向不会对它造成部分影响。 注册表项“ last_write_time”包含在注册表JSON日志中。 “标

    Sachbeque Wow!:trade_mark:「Sachbeque Wow!:trade_mark:」-crx插件

    来到Neder的家,加入WOW。如果你需要一些哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇呜呜呜呜呜 来到Neder的家,加入WOW。 如果您需要一点点哇,只需下载这个毫不费力地制作的chrome扩展程序,即可永久实现*。 因此,只需点击...

    eWOW64Ext v1.1 - 加载任意 32/64 模块|动态调用|64 位汇编|64 位进程读写

    wow64 是在 64 位操作系统上允许 32 位程序(比如易编译的程序)执行的模拟器子系统;在 64 位操作系统中,不管你的程序是 32 还是 64 位的,其实都存在两个地址空间,正常情况下 32 位程序访问的自然是 32 位的地址...

    Arctium WoW Client Launcher

    1.用解压软件将压缩包内容解压到WOW文件夹内,即将Arctium WoW Client Launcher.exe和wow.exe放在同个文件夹内2.Click on Arctium WoW Client Launcher.exe 2.双击Arctium WoW Client Launcher.exe,等待运行完毕,...

    eWOW64Ext v1.2 - 加载任意 32/64 模块|动态调用|64 位汇编|64 位进程读写

    wow64 是在 64 位操作系统上允许 32 位程序(比如易编译的程序)执行的模拟器子系统;在 64 位操作系统中,不管你的程序是 32 还是 64 位的,其实都存在两个地址空间,正常情况下 32 位程序访问的自然是 32 位的地址...

    WoWUI:《魔兽世界》 UI配置文件和注释

    Angarr用户界面 预览(1/5/2021): 描述 专为1920x1080分辨率而设计,但是在与位置和锚点稍微干涉之后,类似的宽高比和尺寸应该... 将发行版中的Interface /和WTF /文件夹复制到Retail WoW Directory中。 将ACCOUN

    wow.js文件——滚动页面动画

    wow.js文件的静态资源

    wow.min.js和animate.css

    css动画效果 wow插件需要的wow.min.js和animate.css

    魔兽世界插件-LUA编辑器 WOWLUA

    WowLua 是一个在魔兽世界里边运行 Lua 脚本的编辑工具环境,他功能包括: ...输出重定向到 WowLua 的输出窗口 WowLua 的输出窗口 /wowlua 或 /lua 打开 WowLua。 /wowluarun 或 /luarun 从命令行运行 WowLua 页面。 ...

Global site tag (gtag.js) - Google Analytics