Cómo iniciar un proceso de 64 bits desde un proceso de 32 bits

Estoy tratando de ejecutar un ejecutable de 64 bits (java.exe) desde nuestra aplicación .NET de 32 bits. Estoy usando clase de Process e invocando cmd /c para soportar todos los comandos posibles (como dir , cd , etc.).

El problema es que en mi máquina instalé la versión de JRE de 64 bits y java.exe solo está disponible desde la carpeta C:\Windows\System32 (x64). Intenté explícitamente iniciar la versión de 64 bits de cmd.exe llamando a C:\Windows\System32\cmd.exe pero se redirige a SysWOW64 debido a que el proceso de llamada es de 32 bits.

¿Hay algo más que pueda hacer para que esto funcione?

EDITAR Todo el asunto cmd /c es un poco de arenque rojo. No es parte del problema, es capaz de ejecutar ejecutables de 64 bits.

Puede deshabilitar temporalmente la redirección del sistema de archivos alrededor de la llamada a Process.Start, las API apropiadas para P / Invoke son Wow64DisableWow64FsRedirection y Wow64RevertWow64FsRedirection .

Otra opción es usar% windir% \ sysnative, que está disponible en Windows Vista y versiones posteriores.

Lo que usted hace es usar% windir% \ sysnative para resolver CMD.EXE de 64 bits y luego ejecuta su otro progtwig de 64 bits a través de la opción de línea de comando “/ c”.

 c:\>set proc PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 70 Stepping 1, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=4601 c:\>c:\windows\sysnative\cmd Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. c:\>set proc PROCESSOR_ARCHITECTURE=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 70 Stepping 1, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=4601 c:\> 

En caso de que esto pueda ayudar … http://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx

Tenga en cuenta que si la aplicación se manifiesta para mostrar el mensaje de UAC, entonces la redirección no tendrá lugar. Y también algunas carpetas están exentas de redirección.