8

编辑 2:好的,所以我更改为 Orwell DevC++,其中包含包含#define KEY_WOW64_64KEY 0x0100的“winnt.h”,但它仍然无法正常工作。(请参阅编辑 1:)

编辑 1:我查看了 CodeBlock 和 DevC++ 附带的“winnt.h”,而 DevC++ 缺少以下几行:

#if (_WIN32_WINNT >= 0x0502)
#define KEY_WOW64_64KEY 0x0100
#define KEY_WOW64_32KEY 0x0200
#endif

并且将上面的代码放在 DevC++ 的 wint.h 中是行不通的。


原始帖子: 我有一个 32 位应用程序(在 DevC++ 和 Windows 7 64 位中开发),它读取 64 位应用程序的注册表作为其任务之一,所以我试图在 RegOpenKeyEx 中使用“KEY_WOW64_64KEY”标志,并发现很少有关于如何使用的帖子它与 _WIN32_WINNT :这个这个

当我在 CodeBlock 项目(一个测试项目)中使用它时,它就像魅力一样,但相同的代码不适用于 DevC++,我现在无法将它移植到代码块,因为代码块存在其他问题。

我如何使它与 DevC++ 一起工作?

谢谢

4

2 回答 2

16

它定义了要使用的 windows 头文件的版本。它必须在你面前宣布#include <Windows.h>

如果您要修改它,您可能应该设置一些其他类似的变量:

MSDN 使用 Windows 标头

于 2013-02-27T12:15:07.073 回答
1
  1. _WIN32_WINNT是一个预处理器标记,被使用的(0x0601)地方替换_WIN32_WINNT。预处理器只是扫描整个文件并用_WIN32_WINNT找到的(0x0601)任何地方替换。

很有可能,可能会有ifdef预处理器守卫来启用/禁用预处理器常量。喜欢:

#ifdef _WIN32_WINNT
#define KEY32 32
#endif

那里,KEY32只会定义IF _WIN32_WINNT被定义。

  1. 它已经适用于 DevC++。
于 2013-02-27T12:16:51.303 回答