2016-08-04 17 views
6

Okay, meine Idee war eine Möglichkeit, sowohl 64-Bit als auch 32-Bit in eine Anwendung zu binden. Wenn die 64-Bit-Version nicht ausgeführt wird, würde sie das 32-Bit versuchen.Wie 64-Bit- und 32-Bit-ausführbare Datei zu einem binden?

Ich las über PE und lernte ein wenig über MS-DOS Real Mode Stub und es sagt, wie es eine Anwendung (in der Regel eine Fehlermeldung) aufruft. Aber jedes Mal, wenn ich versuchte, über MS-DOS Real Mode Stub zu recherchieren, schien es nur Fehlermeldungen anzuzeigen. Meine Idee war also, den STUB mit meiner 32bit Anwendung zu überschreiben.

Mein Selbst naiv dachte, wenn das 32-Bit-Betriebssystem würde die 64-Bit-Programm ausführen würde es fehlschlagen und dann die Stub-Datei ausführen.

Gibt es eine Möglichkeit, meine ausführbare 32bit/64bit unabhängig zu machen?

Antwort

8

Sie nicht eine einzelne ausführbare Datei erstellen können, sowohl x86 und x64 Code enthält. Sie können jedoch separate 32-Bit- und 64-Bit-Anwendungen erstellen und die x64-App in die App-Ressourcen x86 packen. Beim Programmstart können Sie überprüfen, dass Sie x64 Umgebung mit IsWow64Process ausführen dann entpacken Sie Ihre x64 Version und führen Sie es stattdessen

+3

AFAIK, das ist, was Microsoft eigene [SysInternals Tools] (http://sysinternals.com) tun. –

2

Es gibt fat binaries in MacOS, Linux und DOS (oder Hybrid-DOS-Windows), aber nicht mehr als 32 und 64-Bit-Windows-

Sie können separate Versionen des Programms kompilieren und dann durch ein Skript einer anderen ausführbaren wählen

Eine andere Möglichkeit ist die Installation nur der gewünschten Version zur Installationszeit. Dies wird von vielen Programmen wie CCleaner verwendet. Das Installationsprogramm ist eine 32-Bit-App oder eine universelle wie .NET, so dass es überall ausgeführt werden kann. Wenn es 64-Bit-Windows erkennt, dann installiert es nur 64-Bit-Version, gleich 32-Bit-Version.

Lesen Sie mehr:

+0

Danke! Ich schätze deine Zeit. –