I am trying to run a 64 bit executable (java.exe) from our 32-bit .NET application. I am using Process
class and invoking cmd /c <command name>
in order to support all possible commands (like dir
, cd
etc).
The problem is that on my machine I installed 64-bit version of JRE and java.exe is only available from C:\Windows\System32
folder (x64). I have tried explicily starting 64 bit version of cmd.exe
by calling C:\Windows\System32\cmd.exe
but it gets redirected to SysWOW64
due to calling process being 32 bit.
Is there anything else I can do to get this to work?
EDIT The whole cmd /c
thing is a bit of a red herring. It is not part of the problem, being able to run 64 bit executables is.
You can temporarily disable filesystem redirection around the call to Process.Start, the appropriate API's to P/Invoke are Wow64DisableWow64FsRedirection and Wow64RevertWow64FsRedirection.
Another option is to use %windir%\sysnative, which is available on Windows Vista and above.