Как определить, установлена ли 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, мог бы переопределить эти значения по умолчанию.