Que resposta técnica deseja? Pode provavelmente forçar o exe a executar sempre 32bit com algumas ferramentas SDK, mas isso requer um pouco de trabalho.
A resposta fácil é lançar a partir de um processo de 32bit (por exemplo, usar %SystemRoot%\SYSWOW64\cmd.exe
para lançar).
O mais complexo é verificar que tipo de exe é, e depois modificá-lo você mesmo. O fundo aqui é compreender que o código compilado a partir de linguagens que funcionam directamente com as APIs do Windows são criados como 32bit ou 64bit em tempo de compilação pelo programador. Isto não pode então ser alterado sem se voltar ao código fonte.
Contudo, cada vez mais aplicações são escritas através de uma camada de virtualização que torna a escrita de aplicações mais fácil. Há duas aplicações comuns: .NET e Java. Não tenho a certeza acerca de Java, excepto sabendo que forçar a instalação do Java correcto em tempo de execução com a solução do problema.
Para .NET é possível utilizar ferramentas SDK para:
- Validar que a aplicação é “AnyCPU”:
corflags myExe.exe
. Usando um utilitário do SDK .NET para ler os cabeçalhos de um conjunto .NET, para um exe irá devolver algo do género:
Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 0x20003 ILONLY : 1 32BITREQ : 0 32BITPREF : 1 Signed : 0
o 32BITREQ
diz-me que é AnyCPU
porque não é necessário 32bit.
- Use
corflags
com a sua opção /32BITREQ+
para modificar o exe para ser apenas 32bit.