TL; DR:
Zusammenfassend ist es nicht notwendig ; sie könnte haben einen einzelnen Ordner, und nein, Windows nicht präsentiert sich anders als ein Programm , das laufen von einem Ort oder einem anderen verwendet.
Nun, jeder scheint seine Meinung dazu zu äußern, also werfe ich meine 2 ¢ ein. Andere haben bereits vermutet, warum Microsoft separate Ordner der obersten Ebene für 32-Bit- und 64-Bit-Versionen von Programmen erstellt hat. Daher werde ich diesen Teil verlassen (der beste Grund war Davids Erklärung, dass es sich um einen handelt) Bequemlichkeit für Programmierer). Natürlich ist auch dann die direkte Frage, warum das überhaupt notwendig ist , nicht ganz beantwortet . , worauf die Antwort vermutlich lautet: Nein .
Stattdessen werde ich auf den Hauptteil der Frage eingehen
Präsentiert sich Windows irgendwie anders als ein Programm, dem "Programme (x86)" ausgehen?
Nicht wirklich, aber der Speicherort des Programms kann das Verhalten beeinflussen, aber nicht so, wie Sie denken würden.
Wenn Sie ein Programm ausführen, richtet Windows eine Umgebung ein, in der es ausgeführt werden soll (ich meine in Bezug auf Speicher, Adressierung usw., nicht nur Umgebungsvariablen). Diese Umgebung hängt vom Inhalt der ausführbaren Datei ab (32-Bit- und 64-Bit-Programme unterscheiden sich intern). Wenn Sie ein 32-Bit-Programm auf einem 64-Bit-System ausführen, wird es im 32-Bit-Subsystem ausgeführt, das eine 32-Bit-Umgebung emuliert. Es heißt WoW64 (WoW64 steht für Windows unter Windows 64-Bit ) und ähnelt der Ausführung von 16-Bit-Apps unter XP mit NTVDM .
Wenn Sie ein Programm mit oder ohne Administratorrechte ausführen, wirkt sich dies auf die Ausführung aus, der Speicherort sollte sich jedoch nicht auf die Ausführung auswirken (obwohl es einige Beispiele für Standortabhängigkeiten gibt, z. B. einige Treiber).
(Ich bin mit einem anderen Computer, so kann ich nicht verlassen Geschichte in meinem Browser meine Schritte zurückzuverfolgen, aber der andere Tag während der Beantwortung diese SU Frage ich am Ende dieser Frage SO , die zu veranlassten mich Google PROCESSOR_ARCHITEW6432 , das zu führen diese Frage SO und diesen Microsoft-Blogbeitrag .)
Irgendwo auf dem Weg las ich einen StackOverflow-Beitrag darüber, wie die Umgebungsvariable %processor_architecutre%
unterschiedliche Ergebnisse liefert, je nachdem, wo Sie die Eingabeaufforderung ausführen (ich werde versuchen, das genaue Zitat zu finden).
Die Antwort war darauf zurückzuführen, ob die 32-Bit- oder die 64-Bit-Version der Eingabeaufforderung ausgeführt wurde (dh von System32\
oder SysWoW64\
). Mit anderen Worten: Während der Speicherort das Verhalten des Programms zu beeinflussen scheint , liegt dies nur daran, dass es unterschiedliche Versionen des Programms gibt, nicht daran, dass Windows den Ordner auf besondere Weise behandelt.
Dies ist sinnvoll, da der Inhalt der ausführbaren Datei vorschreibt, ob es sich um eine 32-Bit- oder eine 64-Bit-Datei handelt. Sie können also sowohl eine 32-Bit- als auch eine 64-Bit-Kopie desselben Programms (z. B. foobar32.exe
und foobar64.exe
) im selben Ordner und zu jedem Zeitpunkt ablegen Wenn Sie sie ausführen, werden sie korrekt geladen (die 64-Bit-Version wird nativ ausgeführt und die 32-Bit-Version wird in der WoW64-Emulationsebene ausgeführt).
Freepascal ermöglicht es Ihnen , DOS und Windows - Versionen zu installieren und sie gehen in den gleichen Ordner: %programfiles%\FreePascal
. Er verwaltet die verschiedenen Architekturen von ausführbaren Dateien zu halten ( .exe
, .sys
, .dll
, .ovr
usw.) in separaten Ordnern und Ressourcendateien wie Bilder teilen, Source-Dateien, etc.) Es gibt keinen technischen Grund , dass dies nicht auch für 32- erfolgen und 64-Bit-Versionen eines Programms. Wie David sagte, ist es für den Programmierer nur einfacher, sie getrennt zu halten (dh Variablen zu verwenden, damit es so aussieht, als gäbe es nur einen Satz von Dateien usw.).