VB6 - Regqueryvalueex在64位机器上返回2

时间:2014-05-28 08:08:26

标签: vb6 registry 32bit-64bit

应用程序尝试使用advapi.dll regqueryvalueex方法访问注册表项值,该方法在xp(32位)中正常工作但在Windows 7(64位)上返回2。但是regopenkeyex在两台机器上都成功打开了注册表项。

已尝试过以下步骤,但仍无法读取注册表项值 1.尝试以管理员身份运行vb 6 ide 2.将注册表项移动到regedit中的wow64node

1 个答案:

答案 0 :(得分:1)

出于某种原因,您的目标是为{16} Windows创建的advapi.dll库。我不知道你甚至在Windows XP中如何使它工作,因为这是一个只有16位的DLL,它不会加载到Win32进程中,除非有某种类型的thunking层。

对于RegOpenKeyEx()的返回值“2”,文档告诉您:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724911%28v=vs.85%29.aspx

  

返回值

     

如果函数成功,则返回值为ERROR_SUCCESS。

     

如果函数失败,则返回值是系统错误代码。

     

如果lpData缓冲区太小而无法接收数据,则该函数   返回ERROR_MORE_DATA。

     

如果lpValueName注册表值不存在,则返回该函数   ERROR_FILE_NOT_FOUND。

谷歌搜索“系统错误代码”为您提供:http://msdn.microsoft.com/en-gb/library/windows/desktop/ms681382%28v=vs.85%29.aspx

你需要的是:

  

ERROR_FILE_NOT_FOUND

2 (0x2)

The system cannot find the file specified.

如果您尝试在声明语句中使用advapi.dll,则很可能在尝试运行API调用时会出现此错误。基本上,请检查您的声明声明。

当然,如果您能提供代码,我们肯定会知道,而不是尝试进行心理调试。