VB6在64位Windows下使用Shell操作注册表

需积分: 50 26 下载量 153 浏览量 更新于2024-09-06 2 收藏 186KB PDF 举报
"这篇技术文章主要探讨了在64位Windows 7环境下,如何使用VB6(Visual Basic 6)来正确操作注册表的问题。由于VB6是32位程序,所以在64位系统中,它对注册表的访问会被重定向到Wow6432Node子项,导致不能正确操作目标键值。文章提出了一种解决方案,即使用Shell方法,通过调用系统自带的reg命令来实现跨位数的注册表操作。这种方法简单高效,适合在不同位数环境下使用。文章还提到另一种API方法,但建议新项目优先选择Shell法。提供了具体的VB6源代码示例,分模块、窗体和工程文件三部分进行说明。" 在VB6编写的32位程序在64位Windows 7上运行时,遇到的主要问题是注册表操作的重定位问题。32位程序试图访问的注册表路径,如"HKEY_LOCAL_MACHINE\SOFTWARE",实际上会在64位系统中被指向"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node",这导致VB6程序无法准确地读取或修改64位注册表项。例如,删除或读取"360Safe"子项或"InstallDate"键值时,都会发生这种错误。 为了解决这个问题,文章提出了使用Shell方法,通过调用系统命令行工具`reg.exe`来执行注册表操作。这种方式可以避免32位程序在64位系统中的重定位问题,确保程序能够正确访问64位注册表路径。作者提供了相应的VB6源代码示例,将代码分为三个部分:模块、窗体和工程文件,方便读者理解和应用。 VB6的模块部分包含了调用reg命令的函数,这些函数可以用于读取、写入或删除注册表键值。通过Shell函数,VB6可以启动命令行并传递reg命令参数,从而实现对64位注册表的直接操作。这种方法的优点在于代码简洁,适应性强,而且无需深入了解复杂的API调用。 VB6开发者在64位Windows环境下处理注册表时,应考虑使用Shell方法,特别是在开发新项目时,因为它既简单又高效。对于已经存在的代码或需要更复杂操作的情况,可以考虑使用API方法,但这通常需要更多的编程工作和对系统底层机制的理解。
2017-08-18 上传