您的位置:首页 > 其它

收获:关于32bit 64bit 重定向及注册表操作问题

2014-08-12 22:46 309 查看
当32bit应用程序在4bit系统下运行时,是不能直接访问64的一些文件夹的,32位的程序实际运行在一个虚拟的空间中,通过32bit下的NTDLL32.DLL来转换为64bit可以懂的应用控制权再交给64位下的ntdll32.dll,32位的应用运行时,会产生重定向,访问system32目录时,会重定向到SysWow64这个目录,也就是说我们是无法直接访问system32的,但是有两种方法可以实现访问

一、解除重定向 Wow64DisableWow64FsRedirection

这个函数在kernel32.dll中,这是64位下的DLL,32位下的kernel32.dll是没有这个导出函数的,所以,当程序运行在32位的系统中时,就会出现无法定位到输入点 这样的错误

二、在64位系统下使用SysNative代替System32就可以访问到真正的System32目录

c:\windows\SysNative 这个目录实际是不存在的,但是在程序中通过访问它,就可以直接访问到System32这个目录。这种方法同样要判断系统是否为64位,但是使用的API是32位支持的,所以运行时不会报错,如果运行在32位下,就会出现找不到目录的情况,所以一定要先进行判断再使用。

关于注册表的问题

一、注册表重定向

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