Ich weiß, dass in einer 64-Bit-Version von Windows der Ordner "Programme" für 64-Bit-Programme und der Ordner "Programme (x86)" für 32-Bit-Programme vorgesehen ist. Warum ist dies überhaupt erforderlich?
Mit "notwendig" meine ich nicht "warum hätte Microsoft keine anderen Entwurfsentscheidungen treffen können?" denn natürlich könnten sie haben. Ich meine vielmehr: "Warum müssen 32-Bit-Programme angesichts des aktuellen Designs von 64-Bit-Windows einen von 64-Bit-Programmen getrennten Ordner der obersten Ebene haben?" Anders ausgedrückt: "Was würde schief gehen, wenn ich den Umleitungsmechanismus irgendwie umgehen und alles zwingen würde, auf den Real zu installieren C:\Program Files\
?"
Es gibt viele Fragen zu Super User und anderswo, die besagen: "Eine ist für 32-Bit-Programme, eine für 64-Bit-Programme", aber keine, die ich finden kann, gibt den Grund an. Aus meiner Erfahrung scheint es egal zu sein, ob ein 32-Bit-Programm am richtigen Ort installiert ist oder nicht.
Präsentiert sich Windows irgendwie anders als ein Programm, dem "Programme (x86)" ausgehen? Gibt es eine Beschreibung, die genau zeigt, was sich für ein in "Program Files (x86)" anstelle von "Program Files" installiertes Programm unterscheidet? Ich halte es für unwahrscheinlich, dass Microsoft ohne berechtigten technischen Grund einen neuen Ordner einführt.
Antworten:
Kurze Antwort: Um sicherzustellen, dass ältere 32-Bit-Anwendungen weiterhin so funktionieren wie bisher, ohne dass 64-Bit-Anwendungen hässliche Regeln auferlegt werden, die ein permanentes Durcheinander verursachen würden.
Es ist nicht notwendig. Es ist einfach praktischer als andere mögliche Lösungen, zum Beispiel, dass jede Anwendung ihre eigene Methode erstellt, um 32-Bit-DLLs und ausführbare Dateien von 64-Bit-DLLs und ausführbaren Dateien zu trennen.
Der Hauptgrund ist, dass 32-Bit-Anwendungen, die nicht einmal wissen, dass 64-Bit-Systeme existieren, "einfach funktionieren", auch wenn 64-Bit-DLLs an Stellen installiert sind, an denen die Anwendungen möglicherweise aussehen. Eine 32-Bit-Anwendung kann keine 64-Bit-DLL laden. Daher war eine Methode erforderlich, um sicherzustellen, dass es sich um eine 32-Bit-Anwendung handelt (die möglicherweise 64-Bit-Systeme vorbestellt und daher keine Ahnung von 64-Bit-Dateien hat Es gibt keine 64-Bit-DLL. Versuchen Sie, die DLL zu laden, schlagen Sie fehl und generieren Sie eine Fehlermeldung.
Die einfachste Lösung hierfür sind konsequent getrennte Verzeichnisse. Wirklich ist die einzige Alternative, zu verlangen, dass jede 64-Bit-Anwendung ihre ausführbaren Dateien an einer Stelle "versteckt", an der eine 32-Bit-Anwendung nicht hinschaut, wie zum Beispiel in einem
bin64
Verzeichnis innerhalb dieser Anwendung. Dies würde jedoch 64-Bit-Systemen dauerhafte Hässlichkeit auferlegen, nur um ältere Anwendungen zu unterstützen.quelle
ProgramFiles (16)
. Wie genau würde ein 32-Bit-Programm "eine 64-Bit-DLL finden und versuchen, sie zu laden"? In welchen Programmen wird nach zufälligen DLLs gesucht%programfiles%
? Wenn es sich um eine gemeinsam genutzte DLL handelt, wird sie in WinSxS ausgeführt. Wenn es nicht freigegeben wird, ist es dem Programmierer überlassen, seine eigenen DLLs zu verwalten. Der Teil darüber wird jedoch als Annehmlichkeit für Programmierer vernünftig gemacht.Sie können damit sowohl die 32-Bit- als auch die 64-Bit-Version einer Anwendung installieren, ohne dass sie sich selbst überschreibt.
Nachdem ich mir diese Antwort und den Kommentarthread am nächsten Tag angesehen habe, erkenne ich in meiner Antwort ein mögliches größeres Versehen. Ich habe fälschlicherweise einen Programmierhintergrund angenommen und als ich in meinen Kommentaren über Sie sprach, meinte ich nicht den Benutzer, sondern den Programmierer.
Ich arbeite nicht für Microsoft und habe keine Ahnung, was der wahre Grund für diese Ordner ist, aber ich denke, der Grund für diese Ordner ist so offensichtlich, dass ich kein Problem damit habe, darüber zu streiten.
Also lasst es uns brechen!
Ordner sind super!
Lassen Sie uns etwas vereinbaren. Ordner sind großartig! Wir brauchen sie nicht, wir haben genügend mögliche Dateinamen, um jede einzelne Datei im Stammverzeichnis Ihrer Festplatte abzulegen. Warum also überhaupt Ordner?
Sie helfen uns, unsere Sachen zu bestellen. Und Sachen zu bestellen ist großartig. Es hilft uns, Dinge einfacher zu verarbeiten. Dies ist besonders nützlich, wenn Sie mit einer Maschine arbeiten, die eine Struktur benötigt.
Die Trennung von Daten und Logik ist großartig!
Ein in der Programmierung häufig anzutreffendes Paradigma ist die Trennung von Daten und Logik. Sie wollen ein Teil, der weiß , wie etwas zu tun , und Sie wollen einen anderen Teil , den Sie etwas tun können , mit .
Dies ist auch im Dateisystem zu finden.
Wir haben Ordner für die Anwendung (Logik) und Ordner für unsere Wertsachen (Daten):
Logik
%WINDIR%
%PROGRAMFILES%
%PROGRAMFILES(x86)%
Daten
%PROGRAMDATA%
%HOMEDRIVE%%HOMEPATH%
Es sieht also so aus, als wären Ordner fantastisch und es ist sinnvoll, Programme in einen eigenen kleinen Ordner zu legen. Aber warum haben 2? Lassen Sie das Installationsprogramm das erledigen und speichern Sie alles in einem
Programs
Ordner.Installateure sind keine Zauberei
Heutzutage verwenden wir oft kleine Programme, um unsere größeren Programme zu installieren. Wir nennen diese kleinen Programme Installer .
Installateure sind keine Zauberei. Sie müssen von Programmierern geschrieben werden und sind Anwendungen (mit möglichen Fehlern) wie jede andere Anwendung da draußen. Schauen wir uns also die Situation an, der sich ein imaginärer Programmierer mit und ohne das aktuelle System stellen müsste :
1 Programmordner
Der Entwickler unterhält 2 Installer. Eine für die 32-Bit- und eine für die 64-Bit-Version seiner Anwendung. Das 32-Bit-Installationsprogramm schreibt in
C:\Program Files\App\
und das 64-Bit-Installationsprogramm schreibt inC:\Program Files\App\sixtyfour\
.2 Programmordner
Der Entwickler unterhält 1 Installationsprogramm. Das Installationsprogramm schreibt immer auf
%PROGRAMFILES%
und ist abhängig vom Betriebssystem des Pfad zu erweitern entsprechend (Sie verwenden eigentlich nicht Umgebungsvariablen für diese Fälle, die Sie verwenden würden SHGetKnownFolderPath mitFOLDERID_ProgramFiles
dem richtigen Pfad zu holen).Alles findet seinen Platz automatisch und das Muster ist mit jeder installierten Anwendung identisch .
Konsistenz macht Sinn
Wenn Sie etwas lernen , bedeutet dies normalerweise, dass ein beobachtetes Verhalten konsistent war. Ansonsten gibt es wirklich nichts zu beobachten und zu lernen.
Gleiches gilt für unser kleines Dateisystem. Es ist sinnvoll, immer dasselbe Material in denselben Ordnern abzulegen. Auf diese Weise wissen wir, wo wir suchen müssen, wenn wir etwas suchen.
Das System zur Unterscheidung von 32/64-Anwendungen unterstützt dieses Ziel. Die Anwendungen sind in zwei Bereiche unterteilt, um Konflikte in Bezug auf Namen, Binärladeverhalten und Sicherheit (in gewissem Maße) zu vermeiden.
Ich verstehe es immer noch nicht. Das scheint nutzlos
Sie sollten niemals eine Sache vergessen. Die Leute sind unglaublich dumm. Dies schließt Benutzer, Superuser und insbesondere Programmierer ein.
Deshalb brauchen wir Dinge wie die Umleitung von Dateisystemen, um unsere Systeme überhaupt nutzbar zu machen.
Programmierer werden einfach dort reingehen und versuchen zu laden
C:\Windows\system32\awesome.dll
und sich nicht darum zu kümmern, ob sie auf einem 32- oder 64-Bit-System laufen. Sie würden versuchen, die 64-Bit-DLL zu laden und einfach abstürzen. Einige Programmierer möchten eine Office-DLL verwenden, kein Problem, sie wissen, wo sie zu finden sind!C:\Program Files\Microsoft\Office\14.0\wizards.dll
... und noch ein Absturz!Alle diese Anforderungen von 32-Bit-Anwendungen werden an die 32-Bit-Gegenstücke umgeleitet , um Anwendungsabstürze zu vermeiden.
Wir benötigen einige feste Ordnernamen, um ein solches System aufzubauen. Wenn es keine Ordnerstruktur gibt, die diese Umleitung unterstützt, wie soll sie dann funktionieren?
Okay, jetzt verstehe ich. Aber warum dann nicht nutzen
C:\Program Files\x86\
?Jetzt werden wir philosophisch ...
Was würde schief gehen, wenn ich irgendwie den Umleitungsmechanismus umgehen und alles auf den Real installieren müsste
C:\Program Files\
?Höchstwahrscheinlich nichts (solange andere Anwendungen nicht von einem festen Speicherort für diese Anwendung abhängen).
Der WOW64- Mechanismus greift in das
CreateProcess
32- oder 64-Bit-Image ein und führt komplexere Prüfungen durch (komplexer als das Überprüfen des Ordnernamens der ausführbaren Datei).Ja, aber ich meine, wie ALLE Anwendungen!
Einige Fragen erfordern keine Antworten. Es ist nicht beabsichtigt, es nicht zu tun. Hier gibt es nichts zu gewinnen. Die Menge der Probleme eine solche Änderung dazu führen könnten , wird immer schwerer wiegen als jede mögliche Vorteile jemand in dieser sehen konnte.
quelle
C:\Program Files\App32
und installierenC:\Program Files\App64
?SHGetSpecialFolderPath
den Installationsspeicherort ermittelt.%PROGRAMFILES%
? Warum nicht die 32-Bit-Version auf dem Desktop des Benutzers und die 64-Bit-Version in den Papierkorb legen? Nur weil es machbar ist, heißt das noch lange nicht, dass es eine gute Idee ist. Entschuldigung, ich folge Ihrer Argumentation nicht.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
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\
oderSysWoW64\
). 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
undfoobar64.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.).quelle
Ein weiterer Grund ist, dass die meisten Programme Umgebungsvariablen wie% PROGRAMFILES% verwenden, um darauf hinzuweisen, wo ihr Programm installiert wurde. Bei 64-Bit-Programmen wird der normale Speicherort verwendet. Bei 32-Bit-Programmen wird dies in den neuen
Program Files (x86)
Ordner umgeleitet .Zumindest mit den neuen .Net-Inhalten in Visual Studio verfügen sie jetzt über die Variable App.Local, die den gesamten Bedarf dafür überflüssig macht.
quelle
%programfiles%
,%programfiles(x86)%
oder%programw6432%
dort einen Unterschied machen? Alle gemeinsam genutzten DLLs werden in das einzelne WinSxS-Verzeichnis verschoben, und alle nicht gemeinsam genutzten DLLs befinden sich genau dort, wo sich die ausführbare Datei befindet. Dies ist nur dann von Bedeutung, wenn Sie aus irgendeinem Grund eine 32-Bit- und eine 64-Bit-Version desselben Programms installiert haben und selbst dann die 32-Bit-DLLs mit der 32-Bit-ausführbaren Datei und die 64-Bit-DLL mit beibehalten die ausführbare 64-Bit-Datei. Sie können dies folgendermaßen tun:%programfiles%\CoolApp\bin\32
und% programfiles% \ CoolApp \ bin \ 64`, warum die separaten Ordner der obersten Ebene?Quelle
"Was würde schief gehen, wenn ich den Umleitungsmechanismus irgendwie umgehen und alles zwingen würde, auf das echte C: \ Programme \ zu installieren?"
Nichts. Die beiden Programmverzeichnisse dienen nur zur Organisation oder zum Trennen von Programmen mit zwei Versionen, einer 32-Bit- und einer 64-Bit-Version, wie z. B. Internet Explorer. Sie können jedoch ein 32-Bit-Programm in "Program Files" und ein 64-Bit-Programm in "Program Files x86" installieren, und es passiert nichts. Das Programm wird genauso ausgeführt.
Wiki sagt:
quelle
Der Grund dafür ist, den Entwicklern das Upgrade eines Programms auf 64-Bit zu erleichtern. Sie müssen keinen benutzerdefinierten Code schreiben, um beim Kompilieren im 32-Bit-Modus in einem Verzeichnis nach dem Programm zu suchen, und beim Kompilieren im 64-Bit-Modus in einem anderen Verzeichnis. Sie prüfen nur
C:\Program Files
, und wenn sie im 32-Bit-Modus ausgeführt werden, wird dies automatischC:\Program Files (x86)
von 64-Bit-Windows geändert . In ähnlicher Weise sind die Registrierungseinträge zwischen 32-Bit- und 64-Bit-Programmen isoliert.Dies verhindert, dass Konflikte Entwickler nicht kennen, die ihren Kompilierungsmodus nur auf 64-Bit ändern, ohne viel darüber nachzudenken, und verhindert einen enormen Arbeitsaufwand für Entwickler, die möchten, dass Benutzer sowohl 32- als auch 64-Bit-Versionen ihrer Software installieren können Software gleichzeitig.
Aber warum sollte ein Programm zulassen, dass beide Versionen gleichzeitig installiert werden? Ein Beispiel: Photoshop und IE verfügen über native DLL-Erweiterungen. Es ist nicht möglich, 32- und 64-Bit-Code im selben Prozess zu mischen. Daher kann ein Addon für die 32-Bit-Version nicht mit der 64-Bit-Version verwendet werden und umgekehrt. Daher muss Photoshop / IE die Installation beider Versionen zulassen, da sonst die Gefahr besteht, dass die riesige Basis der vorhandenen Addons zerstört wird.
quelle
Programme, die auf "Program Files (x86)" ausgeführt werden, verwenden das WOW64- Subsystem (Windows 32-Bit unter Windows 64-Bit ist eine Reihe von Treibern und APIs, mit denen x32-Anwendungen über ein x64-Architektursystem ausgeführt werden sollen):
Das 64-Bit-System muss 32-Bit-Anwendungen "emulieren". Aus diesem Grund muss Windows zwei Ordner mit Programmdateien "trennen".
quelle
Es ist interessant, dass die Antworten hier und im Internet sehr unterschiedlich sind. Eine genaue Antwort auf diese wichtige Frage zu finden, war eine Herausforderung. Im Internet scheint es eine Menge falscher Informationen zu geben, die zu Verwirrung führen.
Ich habe viel recherchiert und die folgenden Schlussfolgerungen gezogen, die ich für richtig halte:
Dies geschieht automatisch und ist unabhängig davon, wo die Anwendung gespeichert ist. Separate 32-Bit- und 64-Bit-Ordner bieten keine Geschwindigkeit, Zuverlässigkeit oder andere funktionale Vorteile.
Der einzige Grund für die Standardtrennung in zwei Ordner ("Programme" und "Programme (x86)") ist, dass bei zwei Versionen desselben Programms (eine 32-Bit- und eine 64-Bit-Version) ein bereitgestellt wird einfache Möglichkeit, überlappende Dateien voneinander zu trennen. Auch in diesem Fall können alle Dateinamen, solange sie eindeutig sind, ohne Konsequenzen im selben Ordner vorhanden sein.
Es gibt eine Einschränkung zu der obigen Schlussfolgerung, und das ist die von schlecht codierten Anwendungen. Wenn in einer Anwendung Pfade fest programmiert sind, wird nur dieser Pfad verwendet. In der Regel sollten Pfade niemals fest in eine Anwendung codiert werden, aber gelegentlich macht ein Programmierer diesen Fehler. In diesem Fall verwendet das Programm den fest codierten Pfad. Das Verzeichnis, in dem die Anwendung installiert ist, hat keinen Einfluss darauf, wo tatsächlich nach Dateien gesucht wird.
quelle
Wenn Sie Ordner trennen müssen, können Sie die nativen 64-Bit-Anwendungen und diejenigen, für die WoW64 erforderlich ist, voneinander trennen .
Dies kann nützlich sein - wie @OliverSalzburg bereits betont hat -, wenn Sie zum Beispiel sowohl 64-Bit- als auch 32-Bit- Versionen eines Webbrowsers installieren möchten, da einige Plug-Ins und Add-Ons möglicherweise nur für eines von ihnen verfügbar sind die Zwei.
Durch das Trennen von Ordnern wird diese Trennung mithilfe von Techniken wie der Registrierungsumleitung automatisch durchgeführt .
Angenommen, ein Installationsprogramm versucht, den Ordner mit den Programmdateien durch Lesen der Registrierung zu ermitteln, indem beispielsweise RegQueryValueEx verwendet wird .
In jedem Fall wird versucht, den Registrierungsschlüssel zu lesen
das zeigt normalerweise auf
C:\Program Files
.Wenn das Installationsprogramm jedoch eine 32-Bit-Anwendung ist, führt die Registrierungsumleitung zum Registrierungsschlüssel
stattdessen zu lesen, was normalerweise auf
C:\Program Files (x86)
.Warum diese speziellen Ordnernamen verwendet wurden, können nur die Personen beantworten, die diese Wahl getroffen haben. Sie können jederzeit die Namen der Standardordner ändern, wenn Sie möchten.
Das bezweifle ich. Bei den meisten Installationsprogrammen können Sie einen benutzerdefinierten Installationsordner auswählen, sodass es nicht wirklich darauf ankommt, wo ein Programm installiert wird.
quelle
Ich kann die Verwirrung hier nicht glauben. Erstens bin ich ein Vollzeitentwickler.
MS hat dies getan, um den Fall zu lösen, in dem eine DLL sowohl von älteren 32-Bit-Anwendungen als auch von neueren 64-Bit-Anwendungen verwendet wird. Die ältere Methode konnte nicht geändert werden (System32, Programme usw.), da dadurch ältere Programme beschädigt werden, die nicht erneut kompiliert werden können.
Daher hat MS einen Ordner zum Speichern von 64-Bit-spezifischen Programmen, Assemblys und Bibliotheken erstellt, sodass neue Programme mit den richtigen Bibliotheken verknüpft werden können und ältere Programme normal weiterarbeiten.
Derzeit können .Net-DLLs mit anderen Versionen auf demselben Computer koexistieren. Beispielsweise können Sie Library.1.0.1, Library.1.0.2, Library 1.1.0 usw. verwenden. Dies gilt nur für eine bestimmte Bitgröße (32 oder 64). Wenn keine separaten Ordner verwendet werden, muss jede Assembly über eine 32- und eine 64-Bit-Version verfügen. Dies würde ein Verzeichnis, das bereits mehrere Versionen derselben Assembly enthält, stark überladen.
Das ist alles Entwicklerzeug. Als Benutzer muss ich mich nur damit befassen, wenn ich mit einem 32-Bit-Programm unter Windows 7 64 arbeite. Außerdem bevorzuge ich die Möglichkeit, eine 32-Bit-Version und dieselbe Anwendung auch in 64-Bit auszuführen. Wenn ich an einer 32-Bit-Anwendung arbeite, die ich in 64-Bit kompilieren muss, muss ich den Compiler nur dazu auffordern. DLL-Namen und alles andere bleibt gleich.
Der Grund, warum dies unter Windows 95/98 nicht existierte, ist, dass diese Systeme eine 32-Bit-Laufzeit simuliert haben. Es war kein echtes 32-Bit-Betriebssystem. Es hat eine 32-Bit-Ausführung mit dem Namen "Thunking" vorgetäuscht.
Hier ist eine gute Definition: http://searchwinit.techtarget.com/definition/thunk
quelle
ProgramFiles(x86)` avoid clutter? There are still both 32- and 64-bit versions of files, so avoiding clutter doesn't make sense. There is no difference between putting them in
\ 32 \ blah` oder\blah\32
; In jedem Fall sind sie getrennt. Wenn überhaupt, trennt der aktuelle Weg die App-Komponenten (und dupliziert sie auch unnötig, da nur wenige AppsCommonFiles
Ressourcen und Ähnliches verwenden. Außerdem klingt es so, als würden Apps ihre DLLs in einem gemeinsamen Eimer ablegen. Es ist einfach genug, die einer App zu behalten 32-Bit-DLLs mit ihren 32-Bit-Exes und 64-Bit-DLLs mit ihren 64-Bit-ExesEs ist überhaupt nicht notwendig. Zum Beispiel installiere ich auf meinem Arbeitscomputer jede Anwendung in einem Ordner
C:\MyPrograms\
, um sie von den Anwendungen zu trennen, die von unserer IT-Abteilung installiert wurden.Das hindert mich natürlich daran, beide Versionen (32 und 64 Bit) einer Anwendung zu installieren, aber das ist in meinem Fall kein Problem.
Wenn Sie ein Programm starten, wird immer die erste DLL
C:\Windows\System32\ntdll.dll
ausgeführt. Diese DLL bestimmt, ob es sich bei Ihrem Programm um eine 32- oder 64-Bit-Anwendung handelt. Abhängig davon werden Sie weitergeleitet,WoW64
worauf bereits in mehreren Antworten hingewiesen wird.quelle