3

Windowsレジストリアクションからの読み取りまたはWindowsレジストリへの書き込みアクションの使用方法を知っている人はいますか?私が得るのは、試みたときの失敗だけです。

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit例としては、キーから読み取ろうとするとCurrentVersion、そこに設定されていることがわかっているのに、読み取れません。レジストリルートをにHKEY_LOCAL_MACHINE、キー名をにSOFTWARE\JavaSoft\Java Development Kit、値名をに設定しましCurrentVersionたが、それでも失敗します。どんな助けでも本当にありがたいです。

ありがとう。

4

1 に答える 1

2

ほとんどの場合、32ビットインストーラーを実行していますが、64ビットレジストリで値を探しています。

32ビット実行可能ファイルには、の下に独自のソフトウェア設定がありますHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node。レジストリアクションは、インストーラのビット数に対応するレジストリビューから常に読み取られます。64ビットのJDKをインストールし、32ビットのJDKをインストールしていない場合、関心のあるレジストリ値は、レジストリの32ビットビューで空になります。

これが実際に問題であるかどうかを確認するには、メディアウィザードの[32ビットまたは64ビット]ステップで[64ビット実行可能ファイルの生成]を選択してみてください。期待どおりに機能するはずです。

APIを使用すると、レジストリビューを明示的に設定できます。

Object value = WinRegistry.getValue(
    RegistryRoot.HKEY_LOCAL_MACHINE, 
    "SOFTWARE\\JavaSoft\\Java Development Kit",
    "CurrentVersion", 
    RegistryView.BIT64
);
if (value != null) {
    context.setVariable("javaCurrentVersion", value.toString()); 
}

を使用するRegistryView.BIT64RegistryView.BIT32、32ビットインストーラーから64ビットビューにアクセスでき、64ビットインストーラーから32ビットビューにアクセスできます。

于 2011-11-22T09:41:48.733 に答える