2016-08-04 36 views
6

W porządku, więc moim pomysłem był sposób na połączenie 64bit i 32bit w jedną aplikację, więc jeśli nie uruchomi wersji 64-bitowej, spróbuje 32-bitowego.Jak powiązać pliki wykonywalne 64-bitowe i 32-bitowe w jeden?

Czytałem o PE i nauczyłem się trochę o MS-DOS Real Mode Stub i mówi, jak wywołuje aplikację (zwykle komunikat o błędzie). Ale za każdym razem, gdy próbowałem robić badania na temat MS-DOS Real Mode Stub wydawało się, że wyświetlają tylko komunikaty o błędach. Więc moim pomysłem było nadpisanie STUBu moją 32-bitową aplikacją.

Moja naiwność okazała się naiwna, gdy 32-bitowy system operacyjny uruchomił 64-bitowy plik wykonywalny, który zawiedzie, a następnie uruchom plik pośredniczący.

Czy istnieje sposób, aby mój plik wykonywalny 32-bitowy/64-bitowy niezależny?

Odpowiedz

8

Nie można utworzyć pojedynczy plik wykonywalny, zawierający zarówno x86 i x64 kod. Można jednak tworzyć oddzielne aplikacje 32-bitowe i 64-bitowe, pakować aplikacje x64 do zasobów aplikacji x86. Na początku programu możesz sprawdzić, czy używasz środowiska przy użyciu IsWow64Process, a następnie, jeśli to konieczne, rozpakuj wersję x64 i uruchom ją zamiast tego:

+3

AFAIK, to właśnie robią własne [narzędzia SysInternals] firmy Microsoft (http://sysinternals.com). –

2

Istnieje fat binaries w MacOS, Linux i DOS (lub hybrydowego DOS-Windows), ale nie 32, jak i 64-bitowych systemów Windows

Można opracować oddzielne wersje programu, a następnie wybrać przez skrypt innego pliku wykonywalnego

Innym sposobem jest instalacja tylko żądanej wersji w czasie instalacji. Jest używany przez wiele programów, takich jak CCleaner. Instalator to aplikacja 32-bitowa lub uniwersalna, taka jak .NET, dzięki czemu może działać w dowolnym miejscu. Jeśli wykryje 64-bitowy system Windows, zainstaluje tylko wersję 64-bitową, taką samą dla wersji 32-bitowej.

Więcej:

+0

Dzięki! Szanuję Twój czas. –

Powiązane problemy