0

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 の両方で機能させるにはどうすればよいですか?

この記事の種類は、質問に答えます。

レジストリと Wow6432Node キーの読み取り

しかし、回避できるのであれば、x86 と x64 の両方でレジストリを読み取れるようにするためだけに、プロジェクトを x86 としてコンパイルする必要はありません。x64 のパフォーマンスを最大限に活用できるようにしたい。

4

1 に答える 1

0

このリンクを見逃しているかもしれません: http://www.rhyous.com/2011/01/24/how-read-the-64-bit-registry-from-a-32-bit-application-or-vice-versa /

x64プログラムからx86レジストリを読み取るという、あなたがやりたいことをしているようです。

于 2012-04-25T16:24:11.470 に答える