0

次の問題があります:

Windows Vista マシンでSystem.getProperty("os.name")OS名を取得したいと考えています。System.getProperty("os.version")

Java 実行可能ファイルの互換モード設定を確認しました。

Java レポートは次のとおりです。

C:\Program Files\Java\jre6\bin\java.exe - 互換モードなし --> Windows Vista / 6.0 (OK)
C:\Program Files\Java\jre6\bin\java.exe - 互換モード "Windows XP " --> Windows XP / 5.1 (OK)
C:\Program Files\Java\jre6\bin\javaw.exe - 互換モードなし --> Windows XP / 5.1 (WRONG)
C:\Program Files\Java\jre6\ bin\javaw.exe - 互換モード「Windows XP」 --> Windows XP / 5.1 (OK)

32 ビット ビスタで Java 1.6.0_34 (x86) を使用しています。

これの理由が何であるかを誰かが知っていますか?

4

1 に答える 1

0

ほとんどの場合、Java を互換モードで実行しています。これは、手動で行うことを決定したため (たとえば、Java > プロパティ > 互換性モードを右クリック)、または Windows がアプリ互換性の理由で Java に嘘をつくことを決定したためである可能性があります。

app-compat バージョンの嘘は、多くの場合、ロジックが壊れているために新しいバージョンの Windows でうまく動作しないプログラムに与えられます。

if(Windows.Version != WindowsXP)
  abort("Windows 2000 is too old!");

このロジックは Windows Vista では失敗し、java が機能しなくなります。したがって、Windowsはそれを機能させ続けるために嘘をつきます。後で System.getProperty("os.name") 呼び出しの一部として「私のバージョンは何ですか」と言うと、間違ってしまいます。

これを修正するには、最新バージョンの Java がインストールされていることを確認してください。

于 2012-09-01T23:20:34.740 に答える