Qual a resposta técnica que você quer? Provavelmente, você pode forçar o exe a sempre executar 32 bits com algumas ferramentas do SDK, mas isso exige um pouco de trabalho.
A resposta fácil é iniciar a partir de um processo de 32 bits (por exemplo, usar %SystemRoot%\SYSWOW64\cmd.exe
para iniciar).
Quanto mais complexo é verificar que tipo de exe é, modifique-o você mesmo. O pano de fundo aqui é entender que o código compilado de linguagens que trabalham diretamente com as APIs do Windows é criado como 32bit ou 64bit em tempo de compilação pelo desenvolvedor. Isso não pode ser alterado sem voltar ao código-fonte.
No entanto, cada vez mais as aplicações são escritas através de uma camada de virtualização que facilita a escrita de aplicativos. Existem dois tipos comuns: .NET e Java. Não tenho certeza sobre o Java, exceto saber que forçar o tempo de execução do Java correto para resolver o problema.
Para o .NET, você pode usar as ferramentas do SDK para:
- Confirme se o aplicativo é "AnyCPU":
corflags myExe.exe
. Usando um utilitário do .NET SDK para ler os cabeçalhos de um assembly .NET, um exe retornará algo como:
Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 0x20003 ILONLY : 1 32BITREQ : 0 32BITPREF : 1 Signed : 0
o 32BITREQ
me diz que isso é AnyCPU
porque 32 bits não são necessários.
- Use
corflags
com sua opção/32BITREQ+
para modificar o exe para ser apenas 32 bits.