如何在 C++ 中使用 RegQueryValueEx(..) 从注册表中读取 REG_MULTI_SZ 类型值

Posted

技术标签:

【中文标题】如何在 C++ 中使用 RegQueryValueEx(..) 从注册表中读取 REG_MULTI_SZ 类型值【英文标题】:How to read a REG_MULTI_SZ type value from the registry using RegQueryValueEx(..) in c++ 【发布时间】:2010-01-18 18:03:01 【问题描述】:

在我们的 vc++ win32 应用程序中,我们正在读取类型为 reg_multi_sz 的注册表值,它在 32 位上运行良好,但当我在 64 位上运行时提供空缓冲区。如何从我的 32 位应用程序中读取 64 位注册表的值?

【问题讨论】:

【参考方案1】:

你能说得更具体点吗?通常,当您尝试以 32 位代码读取 64 位注册表配置单元时,您必须使用 KEY_WOW64_64KEY 打开 HKLM\Software。希望对您有所帮助。

【讨论】:

非常感谢您使用此 KEY_WOW64_64KEY 访问权限,它在 32 位和 64 位注册表上工作正常。 但是想知道更多关于这方面的信息,你能不能给出它之前失败的原因? 在 64 位版本的 Windows 上,注册表的一部分分别存储用于 32 位应用程序和 64 位应用程序。 KEY_WOW64_64KEY 将启用对 64 位视图的显式访问。除非我查看更多您的代码,否则我将无法准确说出它首先失败的原因。但这有希望为您提供足够的信息来解决这个问题。 好的,谢谢。我知道为什么它之前失败了。我观察到如果我们使用 RegOpenEx() 打开注册表,那么默认情况下它会打开 32 位注册表视图。【参考方案2】:

尝试以下帮助文章中列出的示例代码。它是专门为读取REG_MULTI_SZ 值而编写的。

http://support.microsoft.com/kb/258528

【讨论】:

不幸的是,该示例适用于 Visual FoxPro

以上是关于如何在 C++ 中使用 RegQueryValueEx(..) 从注册表中读取 REG_MULTI_SZ 类型值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual C++ 2010 中使用 C++ 库 [重复]

在 windows 中,如何使用 c++ 检查端口是不是免费

如何在 C++ 中正确使用命名空间?

如何在 C++ 中使用 CPR 库?

当python使用“Python.h”调用该c++进程时,如何在python中停止一个c++进程

如何在 C++ 中使用 ZeroMQ 通信多个图像?