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çá-lo a executar no modo de 32 bits em uma máquina de 64 bits?
Eu não tenho acesso ao código fonte.
Respostas:
Quão técnica é a resposta que você deseja? Provavelmente, você pode forçar o exe a sempre executar 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, use
%SystemRoot%\SYSWOW64\cmd.exe
to launch).O mais complexo é verificar que tipo de exe é e modificá-lo você mesmo. O plano de fundo aqui é entender que o código compilado de idiomas que trabalham diretamente com as APIs do Windows é criado 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 os aplicativos são gravados por meio de uma camada de virtualização que facilita a gravação dos aplicativos. Existem dois comuns: .NET e Java. Não tenho certeza sobre Java, exceto sabendo que forçar a instalação correta do Java Runtime resolve o problema.
Para .NET, você pode usar as ferramentas do SDK para:
corflags myExe.exe
. Usando um utilitário do .NET SDK para ler os cabeçalhos de um assembly .NET, um exe retornará algo como:o
32BITREQ
me diz que isso ocorreAnyCPU
porque 32 bits não é necessário.corflags
com sua/32BITREQ+
opção para modificar o exe para ser apenas de 32 bits.fonte
%SystemRoot%\SYSWOW64\cmd.exe
e ele falhou no mesmo caminho - mostrando uma mensagem de erro - e quando eu check-in TaskManager meu processo de exe não mostra como um processo de 32 bitsSYSWOW64\cmd.exe
ainda faz com que seja executado como um processo de 64 bits (eu apenas tentei).Se você possui o Windows 7 Professional (ou superior), use o modo XP virtual da Microsoft
isso emula (?) um ambiente de 32 bits e provou ser útil para a execução de alguns programas antigos de 16 bits
fonte
Tentei de tudo e nada funcionou. mas depois pensei em mover o diretório gta iv dos arquivos de programa C / (x86) para arquivos de programa C / e ele funciona, pois o x86 é para aplicativos de 32 bits (eu acho), mas funcionou de qualquer maneira.
fonte
Na verdade, existe uma maneira mais fácil de acomodar isso (não uma solução a 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 executar como um processo de 32 bits em vez de 64 bits.
fonte