TL;DR :
Pour résumer, non, ce n'est pas nécessaire ; ils pourrait ont utilisé un seul dossier, et non, Windows ne se présente pas différemment à un programme exécuté à partir d'un emplacement ou d'un autre.
Tout le monde semble donner son avis sur la question, alors je vais ajouter mon grain de sel. D'autres ont déjà fait des conjectures sur les raisons pour lesquelles pourquoi Microsoft a choisi de créer des dossiers de premier niveau distincts pour les versions 32 bits et 64 bits des programmes, je laisserai donc cette partie (la meilleure raison étant l'explication de David selon laquelle il s'agit d'une commodité pour les programmeurs). Bien sûr, même dans ce cas, cela ne répond pas tout à fait à la question directe pourquoi est-ce nécessaire ? à laquelle la réponse est vraisemblablement : ce n'est pas .
Je vais plutôt répondre à l'essentiel de la question.
Est-ce que Windows se présente différemment pour un programme qui s'exécute à partir de "Program Files (x86)" ?
Pas vraiment, mais l'emplacement du programme peut affectent le comportement, mais pas de la manière dont on pourrait le penser.
Lorsque vous exécutez un programme, Windows met en place un environnement dans lequel l'exécuter (je veux dire en termes de mémoire, d'adressage, etc., et pas seulement de variables d'environnement). Cet environnement dépend du contenu de l'exécutable (les programmes 32 bits et 64 bits diffèrent en interne). Lorsque vous exécutez un programme 32 bits sur un système 64 bits, il s'exécute dans le sous-système 32 bits qui émule un environnement 32 bits. Il est appelé WoW64 (WoW64 signifie Windows sur Windows 64 bits ) et est similaire à la façon dont les applications 16 bits sont exécutées sous XP en utilisant le module de gestion de l'environnement. NTVDM .
Lorsque vous exécutez un programme avec ou sans privilèges d'administrateur, cela affecte son fonctionnement, mais l'emplacement devrait ne l'affecte pas (bien qu'il existe quelques exemples de dépendance à l'emplacement, comme certains pilotes par exemple).
(J'utilise un autre ordinateur, je ne peux donc pas me fier à l'historique de mon navigateur pour revenir sur mes pas, mais l'autre jour, en répondant à cette question SU Je me suis retrouvé à cette question SO ce qui m'a poussé à Google PROCESSOR_ARCHITEW6432 ce qui conduit à cette question SO と cet article du blog de Microsoft .)
Quelque part, j'ai lu un message sur StackOverflow qui expliquait comment la variable d'environnement %processor_architecutre%
donne des résultats différents selon l'endroit d'où vous lancez l'invite de commande (Je vais essayer de trouver la citation exacte).
Il s'est avéré que la réponse dépendait de la version 32 bits ou 64 bits de l'invite de commande exécutée (c'est-à-dire à partir de System32\
o SysWoW64\
). En d'autres termes, si l'emplacement semble affectent le comportement du programme, c'est uniquement parce qu'il existe différentes versions du programme, et non parce que Windows traite le dossier d'une manière particulière.
Cela est logique car le contenu du fichier exécutable détermine s'il s'agit d'un fichier 32 bits ou 64 bits. Vous pourriez donc mettre une copie 32 bits et 64 bits du même programme (par ex, foobar32.exe
と foobar64.exe
) dans le même dossier et lorsque vous les exécuterez, ils seront chargés correctement (la version 64 bits sera exécutée de manière native et la version 32 bits sera exécutée dans la couche d'émulation de WoW64).
FreePascal vous permet d'installer les deux versions DOS et Windows et elles vont dans le même dossier : %programfiles%\FreePascal
. Il gère les différentes architectures en conservant les fichiers exécutables ( .exe
, .sys
, .dll
, .ovr
Il n'y a aucune raison technique pour laquelle cela ne pourrait pas être fait pour les versions 32 et 64 bits d'un programme. Comme l'a dit David, il est simplement plus facile pour le programmeur de les séparer (par exemple, en utilisant des variables pour faire croire qu'il n'y a qu'un seul ensemble de fichiers, etc.)
0 votes
En plus de tout cela, il se peut que vous installiez à la fois des versions 32 et 64 bits de certaines applications (par exemple Internet Explorer)... donc, la création d'un dossier de premier niveau différent éviterait le désordre des dlls et des exes...
0 votes
> puisque vous pouvez facilement exécuter n'importe quelle application à partir de n'importe quel dossier sans connaître son architecture @Sklivvz, bien sûr que vous pouvez, l'architecture est évidente lorsque vous lisez l'en-tête PE.