Como posso executar um exe no modo de 32 bits em uma máquina de 64 bits?

17

Eu tenho um executável que funciona bem quando executado em janelas de 32 bits, mas quebras quando executado em janelas de 64 bits.

Existe alguma maneira de forçar a execução no modo de 32 bits em uma máquina de 64 bits?

Eu não tenho acesso ao código-fonte.

    
por Rory 27.09.2012 / 11:21

3 respostas

14

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.
por 27.09.2012 / 11:49
3

Se você tem o Windows 7 Professional (ou superior), use o modo XP virtual de Microsoft

isto emula (?) um ambiente de 32 bits, e provou ser útil para executar alguns programas antigos de 16 bits

    
por 27.09.2012 / 21:06
0

Tentei tudo e nada funcionou. mas depois pensei em mover o diretório gta iv dos arquivos de programa C / (x86) para os arquivos de programa C / e ele funciona, pois o x86 é para aplicativos de 32 bits (eu acho), mas funcionava assim mesmo.

    
por 07.04.2014 / 16:48