2

当社のソフトウェアには、jdkのインストールパスを一覧表示するために使用されるスイングパネルがあります。たとえば、ユーザーのPCに4つのjdkがインストールされていて、jdkパスがパネルにリストされている場合:

  1. C:\ Java \ jdk1.5.0_19 \ bin \ java.exe

  2. D:\ software \ Java6 \ jdk1.6.0_31 \ bin \ java.exe

  3. D:\ software \ Java6 \ jdk1.6.0_31_64 \ bin \ java.exe

  4. D:\ installedapp \ jdk1.7.0_03 \ bin \ java.exe

ユーザーは、ソフトウェアをインストールするには、jdkインストールパスの1つを選択する必要があります。ユーザーが選択したjdkのビットバージョン(32ビットまたは64ビット)を知りたいのですが、どうすればよいですか?

4

3 に答える 3

3

場所がわかっている場合は、おそらくRuntime.exec("pathToJavaInstallPath/bin/java.exe -version")その方法でバージョンを使用してキャプチャできます。これは、少なくとも1つのブルートフォース攻撃です。

サンプル出力:

java version "1.6.0_32"
Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.7-b02, mixed mode)
于 2012-06-28T02:58:47.290 に答える
0

GetBinaryTypeWin32 API関数を使用して、指定された.exeが32ビットか64ビットかを判断することもできます。

詳細については、質問「特定のPEファイル(exeまたはdll)が64ビットまたは32ビット であることを検出する方法」を参照してください。

于 2012-06-29T17:09:11.027 に答える
-1

「java.version」プロパティを使用して、実行中のJavaのバージョンを読み取ることができます。

アーキテクチャ(x86とamd64など)、OS、JREホームも読むことができます。

于 2012-06-28T02:10:29.080 に答える