x86 (XP) で常に実行されている .NET 3.5 アプリケーションがあります。このプログラムを x64 (Win7) で実行する必要があります。このアプリケーションのビルドは任意の CPU であるため、x64 で実行する必要があります。セットアップ プロジェクト > レジストリ エディターで、HKEY_LOCAL_MACHINE\Software\Company\Product\AppPath に AppPath というレジストリ キーを作成します。
64 ビット マシンでは、私のセットアップ プロジェクトはこのキーを HKEY_LOCAL_MACHINE\Software\Wow6432Node\Company\Product\AppPath にインストールします。
私の最初の質問は、セットアップ プロジェクトの TargetPlatform を x64 に変更した場合、レジストリ キーが Wow6432Node サブシステムに追加されるのはなぜですか? x64を正しくターゲットにすると、Wow6432Nodeサブシステムではなくx64レジストリにキーをインストールする必要があることを理解していれば。明らかに、x64 をターゲットにするために必要なすべてを行ったわけではありません。セットアップ プロジェクトのターゲット プラットフォームが x64 であるにもかかわらず、プログラムが 32 ビットであるかのようにインストールされる原因となるものを見逃した可能性があります。
2 番目の質問は、次のようにレジストリを読み取るコードがあるかどうかです。
clientPbDir = Registry.LocalMachine.OpenSubKey("Software\\Company\\Product").GetValue("AppPath").ToString();
これを x86 と x64 の両方で機能させるにはどうすればよいですか?
この記事の種類は、質問に答えます。
しかし、回避できるのであれば、x86 と x64 の両方でレジストリを読み取れるようにするためだけに、プロジェクトを x86 としてコンパイルする必要はありません。x64 のパフォーマンスを最大限に活用できるようにしたい。