我正在用 C++ 编写一个启动器来在 Windows 上启动我的基于 java 的 GUI 应用程序。我CreateProcess
用来启动“javaw.exe”。除了总是启动 32 位版本的“javaw.exe”之外,一切正常。
安装 java 时,它会将可执行文件“java.exe”和“javaw.exe”%windir%\System32
放在 32 位窗口中。在 64 位 Windows 上,它会将相同的可执行文件放入%windir%\SysWow64
.
有3种可能:
在 32 位 windows 上执行的 32 位启动器:
%windir%\System32
在搜索路径中,找到了 32 位 javaw.exe。GUI 启动。一切正常。在 64 位 Windows 上执行的 32 位启动器:
%windir%\System32
位于搜索路径中。%windir%\System32
被重定向到%windir%\SysWow64
(因为在这种情况下我的启动器是 32 位的)。找到 32 位 javaw.exe。GUI 启动。一切正常。在 64 位窗口上执行的 64 位启动器:
%windir%\System32
在搜索路径中。不会发生重定向。它不包含可执行的 javaw.exe。启动器失败。
在第三种情况下如何启动 64 位 javaw.exe?