repopenKeyex在Windows 8.1上返回2

regopenkeyex returns 2 on Windows 8.1

本文关键字:返回 Windows repopenKeyex      更新时间:2023-10-16

我有一个32位程序,该程序在同一商店的两个车道中运行。该程序试图打开查询的注册表密钥。操作系统是Windows 8.1 64位。

在一个车道上它成功,另一个车道失败,repopenKeyex返回2. getlasterror返回0。

它试图打开的钥匙在WOW6432NODE下。

该程序在两台计算机上的同一Windows用户下运行,两者都存在。UAC设置为"永不通知"(最低(,Windows版本是相同的。一切都应该是相同的...

我故意没有指定key_wow64_64key,因为代码应该没有它。但是即使我确实使用它,我也会得到相同的结果。

是什么造成这一点?

代码:

rc = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,
               szKey,
                0,
                KEY_QUERY_VALUE,
                &m_hKey);

谢谢。

您实际上需要阅读有关您在MSDN上使用的功能的信息。注册表功能直接返回错误代码,它们不使用GetLastError

2是 ERROR_FILE_NOT_FOUND,所以无论您在 szKey中隐藏什么都不是有效的子钥匙路径。

WOW6432NODE是您真正不应该使用的保留关键名称,如果需要在64位应用程序中访问32位注册表视图,请使用KEY_WOW64_32KEY。默认情况下,一个32位应用程序读取WOW6432NODE密钥的键。

使用过程监视器确保您访问正确的键。