2012-09-27 09:21:43 +0000 2012-09-27 09:21:43 +0000
18
18

Como posso executar um exe em modo 32-bit numa máquina de 64-bit?

Tenho um executável que funciona bem quando executado em janelas de 32-bit mas que se parte quando executado em janelas de 64-bit.

Existe alguma forma de o forçar a correr em modo 32-bit numa máquina de 64-bit?

Não tenho acesso ao código fonte.

Respostas (4)

16
16
16
2012-09-27 09:49:02 +0000

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.
3
3
3
2012-09-27 19:06:35 +0000

Se tiver o Windows 7 profissional (ou superior), então use o modo XP virtual de Microsoft

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

0
0
0
2018-11-29 21:07:43 +0000

Na verdade, há uma maneira mais fácil de acomodar isto (não uma solução a longo prazo).

Largue a aplicação “corflags.exe” na pasta \system32. Abrir uma linha de comando como administrador e digitar…

corflags “path and name of the exe” /32BITPREF32+

Isto forçará a aplicação a correr como um processo de 32-bit em vez de 64-bit.

0
0
0
2014-04-07 14:48:39 +0000

Tentei tudo e nada resultou. mas depois pensei em mover o directório gta iv dos ficheiros C/program (x86) para os ficheiros C/program e funciona uma vez que o x86 é para aplicações de 32bit (penso eu) mas funcionou de qualquer forma.