0

我有一个在 C++ Builder 2010 中构建的应用程序。一些配置值存储在注册表中,作为 32 位应用程序,一些值保存在Wow6432Node键下。

无论我是在 WinXP、Win7、Win8... 32 位还是 64 位上运行应用程序,这都像发条一样工作。该应用程序由 TeamCity 下的 Windows 7 64 位构建代理构建。

然后突然间它就停止了工作。没有对代码加载注册表项进行任何更改。在四处挖掘之后,我通过强制注册表对象的访问KEY_WOW64_32KEY来使其工作。

但这似乎很麻烦,必须在任何地方做。首先尝试读取,如果没有找到值,请尝试签入键。自上次工作以来,我已经查看了所有代码更改,并且没有任何内容涉及注册表加载,如果某些奇怪的设置被错误地启用但没有好处,我尝试恢复.cbproj文件。

此外,在也是 Win 7 64 位机器的开发机器上本地构建它可以正常工作。

到底会发生什么?这就像魔术:)

4

1 回答 1

0

KEY_WOW64_32KEY仅适用于 64 位进程需要访问 32 位密钥,或者 32 位进程需要访问远程 64 位机器的 32 位注册表时。这让我想知道您的项目是否正在编译为 64 位,而不是像您期望的那样编译为 32 位。运行应用程序时,请在任务管理器中检查它实际上是 32 位还是 64 位进程。

于 2014-03-26T23:56:52.430 回答