Eu tenho um executável que funciona bem quando executado em janelas de 32 bits, mas quebra quando executado em janelas de 64 bits.
Existe alguma maneira de forçá-lo a rodar no modo de 32 bits em uma máquina de 64 bits?
Não tenho acesso ao código fonte.
Responder1
Quão técnica você deseja? Você provavelmente pode forçar o exe a rodar sempre em 32 bits com algumas ferramentas SDK, mas isso requer 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).
O mais complexo é verificar que tipo de exe é e modificá-lo você mesmo. O pano de fundo aqui é entender que o código compilado de linguagens que funcionam diretamente com as APIs do Windows são criados como 32 bits ou 64 bits em tempo de compilação pelo desenvolvedor. Isso não pode ser alterado sem voltar ao código-fonte.
No entanto, cada vez mais aplicações são escritas através de uma camada de virtualização que facilita a escrita de aplicações. Existem dois comuns: .NET e Java. Não tenho certeza sobre o Java, exceto saber que forçar a instalação correta do tempo de execução do Java resolverá o problema.
Para .NET você pode usar ferramentas SDK para:
- Valide se a aplicação é "AnyCPU":
corflags myExe.exe
. Usar um utilitário do SDK do .NET para ler os cabeçalhos de um assembly .NET, para um exe retornará algo como:
Versão: v4.0.30319 Cabeçalho CLR: 2,5 PE: PE32 CorFlags: 0x20003 SÓ: 1 32BITREQ: 0 32BITPREF: 1 Assinado: 0
o 32BITREQ
me diz que isso ocorre AnyCPU
porque 32 bits não é necessário.
- Use
corflags
com sua/32BITREQ+
opção de modificar o exe para ser apenas de 32 bits.
Responder2
Se você possui o Windows 7 Professional (ou superior), use o modo XP virtual deMicrosoft
isso emula (?) um ambiente de 32 bits e provou ser útil para executar alguns programas antigos de 16 bits
Responder3
Tentei de tudo e nada funcionou. mas então pensei em mover o diretório gta iv dos arquivos de programas C/(x86) para arquivos de programas C/e funcionou, já que x86 é para aplicativos de 32 bits (eu acho), mas funcionou de qualquer maneira.
Responder4
Na verdade, existe uma maneira mais fácil de acomodar isso (não é uma solução de longo prazo).
Solte o aplicativo "corflags.exe" na pasta \windows\system32. Abra uma linha de comando como administrador e digite...
corflags "caminho e nome do exe" /32BITPREF32+
Isso forçará o aplicativo a ser executado como um processo de 32 bits em vez de 64 bits.