C++ Builder 2010 でビルドされたアプリケーションがあります。一部の構成値はレジストリに保存され、32 ビット アプリケーションであるため、一部の値はWow6432Nodeキーの下に保存されます。
WinXP、Win7、Win8... 32 ビットまたは 64 ビットのいずれでアプリケーションを実行しても、これは時計仕掛けのように機能します。アプリケーションは、TeamCity の下の Windows 7 64 ビット ビルド エージェントによってビルドされます。
その後、突然、機能しなくなりました。レジストリ キーをロードするコードは変更されていません。掘り下げた後、レジストリオブジェクトのアクセスを強制的にKEY_WOW64_32KEYにすることで機能するようになりました。
しかし、それをどこでもしなければならないのはかなり面倒です。最初に読み取りを試み、値が見つからない場合はwowキーをチェックインしてみてください。最後に機能してからのすべてのコード変更を調べましたが、レジストリの読み込みには何も影響しませんでした。.cbprojファイルを元に戻そうとしましたが、奇妙な設定が誤って有効になってしまったが、うまくいきませんでした。
また、Win 7 64 ビット マシンでもある開発マシンでローカルにビルドすると、正常に動作します。
いったい何が起こったのでしょうか?それは魔法のようです:)