32位程序操作64位系统注册表,控制转向问题
2018-01-29 12:33
381 查看
网上有很多关于 32 位程序操作 64 位系统的文章,都是用 Wow64DisableWow64FsRedirection 和 Wow64RevertWow64FsRedirection 来关闭打开文件系统转向。当然了,这个不好使,关闭打开的只是文件系统的转向,对于注册表操作不起作用。这个问题困扰了我好几年,从用上 Win7x64 开始就是。这几天又在网上查资料,突然发现两个常数,试了一下,有效!
对了,就是 KEY_WOW64_64KEY 和 KEY_WOW64_32KEY 这两个常量。
KEY_WOW64_64KEY 可以使 32 位程序在 64 位系统中正常操作注册表的 64 位部分。
KEY_WOW64_32KEY 则可以使 64 位程序去操作注册表的 32 位部分。
当然啦,对于 VB6 来说,KEY_WOW64_64KEY 就够用了。
举个粟子:
' 注册表关键字安全选项... Private Const READ_CONTROL = &H20000 Private Const KEY_QUERY_VALUE = &H1 Private Const KEY_SET_VALUE = &H2 Private Const KEY_CREATE_SUB_KEY = &H4 Private Const KEY_ENUMERATE_SUB_KEYS = &H8 Private Const KEY_NOTIFY = &H10 Private Const KEY_CREATE_LINK = &H20 Private Const KEY_READ = KEY_QUERY_VALUE + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + READ_CONTROL Private Const KEY_WRITE = KEY_SET_VALUE + KEY_CREATE_SUB_KEY + READ_CONTROL Private Const KEY_EXECUTE = KEY_READ Private Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL Private Const KEY_WOW64_64KEY = &H100& Private Const KEY_WOW64_32KEY = &H200&
对了,就是 KEY_WOW64_64KEY 和 KEY_WOW64_32KEY 这两个常量。
KEY_WOW64_64KEY 可以使 32 位程序在 64 位系统中正常操作注册表的 64 位部分。
KEY_WOW64_32KEY 则可以使 64 位程序去操作注册表的 32 位部分。
当然啦,对于 VB6 来说,KEY_WOW64_64KEY 就够用了。
举个粟子:
RegOpenKeyEx HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS Or KEY_WOW64_64KEY, hKey
相关文章推荐
- 应对32位程序在64位系统上访问注册表和文件自动转向问题
- 应对32位程序在64位系统上访问注册表和文件自动转向问题
- 应对32位程序在64位系统上访问注册表和文件自动转向问题
- 应对32位程序在64位系统上访问注册表和文件自动转向问题
- 应对32位程序在64位系统上访问注册表和文件自动转向问题
- Hibernate程序从64位转移到32位机上运行遇到的问题
- 彻底根除“无法安装64位版本的Office,因为在您的PC上找到了以下32位程序:”的问题
- C#程序从32位系统迁移到64位系统的问题
- Ubuntu 13.04 64位运行32位程序出现问题
- MSCRM4.0 - 在64位MSCRM4.0 环境中运行32位程序出现的问题及解决方案
- 64位linux不能运行32位程序,问题解决方案
- 【Delphi】32位源码编译64位程序时的字节对齐问题
- 在32位系统计算机上编写的程序 (工具vs2013/2010),在64位操作系统上运行时出现缺少.dll和0x000007b错误的问题
- 32位C/C++程序移植到64位系统时需要注意的问题
- 32位C/C++程序移植到64位系统时需要注意的问题
- 关于32位程序在64位系统下运行中需要注意的重定向问题(有图有真相)(***)
- 32位程序移植到64位需要考虑的问题
- 使用VS开发基于Oracle程序的严重问题32位64位
- 未能加载文件或程序集“Oracle.DataAccess, " 64位OS运行32位程序的问题
- 64位系统中32位程序性能计数器无法工作的问题