
Considere el siguiente script de PowerShell:
[System.IntPtr]::Size
[Environment]::Is64BitProcess
Si ejecuto esto directamente dentro de PowerShell en una máquina de 64 bits, obtengo correctamente
8
True
Pero cuando incluyo esto dentro de un instalador autoextraíble usando Inno Setup (que está integrado en una máquina de 32 bits), siempre obtengo:
4
False
¿Cómo me aseguro de que PowerShell se esté ejecutando en modo de 64 bits en una computadora de 64 bits (y de 32 bits en una computadora de 32 bits)?
También intenté ejecutar un archivo por lotes que llama al script de PowerShell, asumiendo que el sistema iniciaría PowerShell en su modo predeterminado, pero esto tampoco funciona.
También probé iexpress para ajustar el programa, el mismo problema.
Respuesta1
Si su instalador es una aplicación de 32 bits, siempre iniciará un PowerShell de 32 bits. Incluso usando la ruta completa:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
porque el redirector del sistema de archivos de Windows lo cambiará aC:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
para iniciar un PowerShell de 64 bits desde un proceso de 32 bits, use:
C:\Windows\sysnative\WindowsPowerShell\v1.0\powershell.exe
en una máquina de 32 bits, el mismo comando aún debería ejecutar PowerShell de 32 bits, pero ya no puedo probarlo.