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

Jak mogę uruchomić exe w trybie 32-bitowym na 64-bitowej maszynie?

Mam plik wykonywalny, który działa dobrze, gdy jest uruchamiany na 32-bitowych oknach, ale psuje się, gdy jest uruchamiany na 64-bitowych oknach.

Czy istnieje jakiś sposób, aby zmusić go do uruchomienia w trybie 32-bitowym na 64-bitowej maszynie?

Nie mam dostępu do kodu źródłowego.

Odpowiedzi (4)

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

Jak bardzo technicznej odpowiedzi oczekujesz? Prawdopodobnie możesz zmusić exe do uruchamiania zawsze w trybie 32bit za pomocą kilku narzędzi SDK, ale wymaga to trochę pracy.

Łatwą odpowiedzią jest uruchomienie z 32bitowego procesu (np. użyj %SystemRoot%\SYSWOW64\cmd.exe do uruchomienia).

Bardziej skomplikowane jest sprawdzenie jaki to rodzaj exe, a następnie zmodyfikowanie go samodzielnie. Tło tutaj jest zrozumieć, że skompilowany kod z języków, które bezpośrednio pracują z interfejsami API Windows, są tworzone jako 32bit lub 64bit w czasie kompilacji przez programistę. To nie może być zmienione bez powrotu do kodu źródłowego.

Jednak coraz częściej aplikacje są pisane za pomocą warstwy wirtualizacji, która ułatwia pisanie aplikacji. Istnieją dwie popularne: .NET i Java. Nie jestem pewien co do Javy, poza tym, że wiem, że wymuszenie odpowiedniej instalacji Java runtime rozwiąże problem.

Dla .NET możesz użyć narzędzi SDK do:

  • Walidacji, że aplikacja jest “AnyCPU”: corflags myExe.exe. Użycie narzędzia z .NET SDK do odczytania nagłówków zespołu .NET, dla exe zwróci coś takiego jak:
Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 0x20003 ILONLY : 1 32BITREQ : 0 32BITPREF : 1 Signed : 0

the 32BITREQ mówi mi, że jest to AnyCPU ponieważ 32bit nie jest wymagane.

  • Użyj corflags z opcją /32BITREQ+ aby zmodyfikować exe tak, aby był tylko 32bitowy.
3
3
3
2012-09-27 19:06:35 +0000

Jeśli masz windows 7 professional (lub wyższy), użyj wirtualnego trybu XP z Microsoft

to emuluje(?) 32-bitowe środowisko, i okazało się przydatne do uruchomienia niektórych starych 16-bitowych programów.

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

W rzeczywistości istnieje łatwiejszy sposób na dostosowanie się do tego (nie jest to rozwiązanie długoterminowe).

Upuść aplikację “corflags.exe” do folderu \windows\system32. Otwórz wiersz poleceń jako administrator i wpisz…

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

To wymusi uruchomienie aplikacji jako procesu 32-bitowego zamiast 64-bitowego.

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

Próbowałem wszystkiego i nic nie działało. ale potem pomyślałem o przeniesieniu katalogu gta iv z C/program files(x86) do C/program files i to zadziałało, ponieważ x86 jest dla 32bit apps(I think) ale i tak zadziałało.