いくつかのレジストリ キーを使用する .net 4.0 アプリと、セットアップ時にそれらのキーを作成する vs2010 セットアップ & 展開プロジェクトがあります。
問題 - (デフォルト) RegEdit はキーが存在することを示しますが、.net コードは OpenSubKey で正しいパス ( \ を含む) で null を返します。
結局のところ、これはKB305097による 32 ビットおよび 64 ビットのレジストリによるもの です。
そして、次のようなコードが必要です
RegistryKey someFunc()
{
var r64o32 = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine,
Environment.Is64BitOperatingSystem ? RegistryView.Registry64 :
RegistryView.Registry32);
return r64o32.OpenSubKey(regKey);
}
ただし、32 ビット マシンを使用できないため、上記のコードをテストできませんが、アプリは 32 ビット マシンでも使用できる必要があります。
ヘルプを探しています -
- 上記のアプローチは 64/32 ビットの両方で正しいですか?
- vs2010 セットアップ プロジェクトによって作成されたセットアップは、マシンに基づいて 64/32 レジストリに定義されたレジストリ エントリをインストールしますか?
- 他の落とし穴はありますか?