Mam plik wykonywalny, który działa dobrze, gdy działa na 32-bitowych oknach, ale psuje się, gdy działa na 64-bitowych oknach.
Czy jest jakiś sposób, aby zmusić go do działania w trybie 32-bitowym na komputerze 64-bitowym?
Nie mam dostępu do kodu źródłowego.
Odpowiedzi:
Jaką odpowiedź techniczną chcesz? Prawdopodobnie możesz zmusić exe, aby zawsze uruchamiał 32-bitowy za pomocą kilku narzędzi SDK, ale wymaga to trochę pracy.
Prostą odpowiedzią jest uruchomienie z procesu 32-bitowego (np. Użycie
%SystemRoot%\SYSWOW64\cmd.exe
do uruchomienia).Bardziej skomplikowane jest sprawdzenie, jaki to jest exe, a następnie samodzielne zmodyfikowanie go. Tłem tutaj jest zrozumienie, że skompilowany kod z języków, które bezpośrednio współpracują z interfejsami API systemu Windows są tworzone przez programistę w wersji 32-bitowej lub 64-bitowej. Nie można tego zmienić bez powrotu do kodu źródłowego.
Jednak coraz częściej aplikacje są pisane za pośrednictwem warstwy wirtualizacji, która ułatwia pisanie aplikacji. Istnieją dwa popularne: .NET i Java. Nie jestem pewien co do Javy, oprócz tego, że wymuszenie prawidłowej instalacji środowiska wykonawczego Java rozwiązuje problem.
W przypadku platformy .NET można użyć narzędzi SDK do:
corflags myExe.exe
. Użycie narzędzia z .NET SDK do odczytu nagłówków zestawu .NET, dla exe zwróci coś takiego:32BITREQ
mówi mi, że toAnyCPU
dlatego, że 32-bitowe nie jest wymagane.corflags
z tą/32BITREQ+
opcją, aby zmodyfikować exe tak, aby był tylko 32-bitowy.źródło
%SystemRoot%\SYSWOW64\cmd.exe
i nie powiodło się w ten sam sposób - wyświetla komunikat o błędzie - a kiedy sprawdzam w TaskManager mój proces exe nie wyświetla się jako proces 32-bitowySYSWOW64\cmd.exe
nadal powoduje, że jest on uruchamiany jako proces 64-bitowy (właśnie go wypróbowałem).Jeśli masz system Windows 7 Professional (lub nowszy), skorzystaj z trybu wirtualnego XP firmy Microsoft
emuluje to (?) środowisko 32-bitowe i okazało się przydatne do uruchomienia niektórych starych programów 16-bitowych
źródło
Próbowałem wszystkiego i nic nie działało. ale potem pomyślałem o przeniesieniu katalogu gta iv z plików programu C / (x86) do plików programu C / i to działa, ponieważ x86 jest dla aplikacji 32-bitowych (tak myślę), ale i tak działał.
źródło
Jest właściwie łatwiejszy sposób na dostosowanie się do tego (nie jest to rozwiązanie długoterminowe).
Upuść aplikację „corflags.exe” w folderze \ windows \ system32. Otwórz wiersz polecenia jako administrator i wpisz ...
corflags „ścieżka i nazwa exe” / 32BITPREF32 +
Zmusi to aplikację do działania jako proces 32-bitowy zamiast 64-bitowy.
źródło