Как запустить 64-битную версию javaw.exe из CreateProcess (C ++) - PullRequest
0 голосов
/ 27 апреля 2011

Я пишу модуль запуска на C ++ для запуска моего приложения с графическим интерфейсом на основе Java в Windows.Я использую CreateProcess для запуска "javaw.exe".Все работает, за исключением того факта, что всегда запускается 32-битная версия javaw.exe.

Когда java установлен, он помещает исполняемые файлы "java.exe" и "javaw.exe" в %windir%\System32 на 32-битных окнах.В 64-битных окнах он помещает те же исполняемые файлы в %windir%\SysWow64.

. Существует 3 варианта:

  1. 32-битная программа запуска, выполняемая в 32-битных окнах:%windir%\System32 находится в пути поиска, и найден 32-разрядный файл javaw.exe.Графический интерфейс запускается.Все работает.

  2. 32-битный лаунчер, запущенный в 64-битных окнах: %windir%\System32 находится в пути поиска.%windir%\System32 перенаправляется на %windir%\SysWow64 (так как в этом случае мой модуль запуска 32-разрядный).32-битный javaw.exe найден.Графический интерфейс запускается.Все работает.

  3. 64-битный лаунчер, запущенный на 64-битных окнах: %windir%\System32 находится в пути поиска.Перенаправление не происходит.Он не содержит исполняемый файл javaw.exe.Сбой запуска.

Как запустить 64-разрядный файл javaw.exe в третьем случае?

1 Ответ

2 голосов
/ 28 апреля 2011

Я наконец-то нашел решение (копая различные сообщения в stackoverflow).

Последние версии JRE при установке помещают копию "javaw.exe" в System32. Предыдущие версии 64-битной JRE, вероятно, не (не уверен).

В любом случае раздел реестра HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment имеет свойство CurrentVersion, которое указывает на ключ для JRE по умолчанию для системы. Подключ, соответствующий номеру версии, имеет свойство JavaHome, которое указывает на место установки JRE.

Если JRE / JDK не установлен, ключ Java Runtime Environment не будет найден.

...