Как определить, установлена ​​ли 32-разрядная Java на x64 Windows, только глядя на файловую систему и реестр?

Мне нужно определить, установлена ​​ли в конкретной системе 32-разрядная Java. Я делаю удаленный запрос, который дает мне доступ к файловой системе и реестру, поэтому я не могу попытаться запустить java.exe или запустить любой Java-код.

Я также хочу убедиться, что я обнаруживаю как IBM, так и Sun Java, а также любые другие дистрибутивы, которые, похоже, помещают вещи в разные места в файловую систему и в реестр.

Лучшее, что я придумал, это проверить на C:\Windows\SysWOW64\java.exe. Является ли это надежным способом проверки наличия 32-битной Java или существуют определенные версии, которые не будут помещать java.exe в эту папку?

Обновление: Я все еще ищу более надежный ответ на этот вопрос. Чтобы быть ясным, у меня нет доступа к командной строке. Кроме того, я хочу обнаружить Java независимо от того, кто является издателем, какой номер версии установлен, и независимо от того, какой путь пользователь выбрал для его установки.

C:\Windows\SysWOW64\java.exe, похоже, соответствует этим требованиям, но мне бы хотелось получить подтверждение от кого-то, более осведомленного о том, что каждый установщик Java действительно поставит этот исполняемый файл там.

Ответ 1

Я попробовал как 32-разрядные, так и 64-разрядные инсталляторы Oracle и IBM Java в Windows, а наличие C:\Windows\SysWOW64\java.exe кажется надежным способом определить, что 32-разрядный Java доступен. Я не тестировал более старые версии этих установщиков, но это, по крайней мере, похоже, что это должен быть надежный способ тестирования для самых последних версий Java.

Ответ 2

Кажется, это информация о Windows:

1.) Откройте командную строку Windows.

2.) Введите: java -XshowSettings: все и нажмите ENTER.

3.) В окне команд появится много информации. Прокрутите список до тех пор, пока не найдете строку: sun.arch.data.model.

4.) Если в нем указано sun.arch.data.model = 32, ваша виртуальная машина составляет 32 бит. Если он говорит sun.arch.data.model = 64, ваша виртуальная машина равна 64 бит.

Ответ 3

У вас есть доступ к командной строке?

Метод 1: Командная строка

Специфика Java, установленная в системе, может быть определена путем выполнения следующей команды java -version

Метод 2: Структура папок

Если у вас нет доступа к командной строке, то укажите папку, где находится Java.

32 бит: C:\Program Files (x86)\Java\jdk1.6.0_30

64 бит: C:\Program Files\Java\jdk1.6.0_25

Однако во время установки возможно, что пользователь может изменить папку установки.

Метод 3: реестр

Вы также можете увидеть версию, установленную в редакторе реестра.

  • Перейти в редактор реестра

  • Изменить → Найти

  • Поиск Java. Вы получите записи в реестре для Java.

  • В записи с именем: DisplayName и DisplayVersion отображается установленная версия Java

Ответ 4

Проверьте этот ключ для 32-разрядных и 64-битных машин Windows.

 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

и это для 64-битных Windows с 32 бит JRE.

 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment

Это будет работать для JRE оракула. ​​

Ответ 5

Если это не Oracle Java, вы не сможете сказать. Когда я устанавливаю Oracle Java 64-bit, файлы переходят в C:\Program Files\Java, но когда я устанавливаю 32-разрядную версию, они по умолчанию заменяют C:\Program Files (x86)\Java. Конечно, человек, который установил Java, мог бы переопределить эти значения по умолчанию.