TL; DR:
Riassumendo, no, non è necessario ; avrebbero potuto usare una singola cartella e no, Windows non si presenta in modo diverso a un programma in esecuzione da una posizione o un'altra.
Bene, tutti sembrano esprimere le loro opinioni su questo, quindi lancerò il mio 2 ¢. Altri hanno già ipotizzato i motivi per cui Microsoft ha scelto di creare cartelle di livello superiore separate per le versioni di programmi a 32 e 64 bit, quindi lascerò quella parte (la ragione migliore è stata la spiegazione di David che è come un convenienza per i programmatori). Ovviamente anche in questo caso, non affronta del tutto la domanda diretta perché questo è persino necessario? , a cui la risposta è presumibilmente: non lo è .
Invece, affronterò il corpo principale della domanda
Windows si presenta in qualche modo in modo diverso a un programma che si esaurisce "Programmi (x86)"?
Non proprio, ma la posizione del programma può influire sul comportamento, ma non nel modo in cui si potrebbe pensare.
Quando esegui un programma, Windows imposta un ambiente in cui eseguirlo (intendo in termini di memoria, indirizzamento, ecc., Non solo variabili di ambiente). Questo ambiente dipende dal contenuto dell'eseguibile (i programmi a 32 e 64 bit differiscono internamente). Quando si esegue un programma a 32 bit su un sistema a 64 bit, viene eseguito nel sottosistema a 32 bit che emula un ambiente a 32 bit. Si chiama WoW64 (WoW64 sta per Windows su Windows a 64 bit ) ed è simile a come le app a 16 bit verrebbero eseguite in XP usando NTVDM .
Quando si esegue un programma con o senza privilegi di amministratore, influisce sul modo in cui viene eseguito, ma la posizione non dovrebbe influire su di esso (anche se ci sono alcuni esempi di dipendenza dalla posizione come ad esempio alcuni driver).
(Sto usando un computer diverso, quindi non posso fare affidamento sulla cronologia del mio browser per tornare indietro sui miei passi, ma l'altro giorno mentre rispondevo a questa domanda SU sono finito a questa domanda SO che mi ha causato a Google PROCESSOR_ARCHITEW6432 che mi ha portato a questa domanda SO e questo post sul blog di Microsoft .)
Da qualche parte lungo la strada, ho letto un post StackOverflow su come la variabile di ambiente %processor_architecutre%
dia risultati diversi a seconda di dove si esegue il prompt dei comandi (cercherò di trovare la citazione esatta).
La risposta è risultata dovuta se è stata eseguita la versione a 32 o 64 bit del prompt dei comandi (ovvero, da System32\
o SysWoW64\
). In altre parole, mentre la posizione sembra influenzare il comportamento del programma, è solo perché esistono diverse versioni del programma, non perché Windows tratta la cartella in un modo speciale.
Ciò ha senso perché il contenuto del file eseguibile determina se è a 32 o 64 bit, quindi è possibile inserire una copia a 32 e 64 bit dello stesso programma (ad esempio, foobar32.exe
e foobar64.exe
) nella stessa cartella e quando si eseguirli, verranno caricati correttamente (la versione a 64 bit verrà eseguita in modo nativo e quella a 32 bit verrà eseguita nel livello di emulazione WoW64).
FreePascal consente di installare entrambe le versioni DOS e Windows e vanno nella stessa cartella: %programfiles%\FreePascal
. Gestisce le diverse architetture mantenendo i file eseguibili ( .exe
, .sys
, .dll
, .ovr
, etc.) in cartelle separate e la condivisione di file di risorse come immagini, source-files, etc.) Non c'è alcuna ragione tecnica che questo non poteva essere fatto anche per il 32 e Versioni a 64 bit di un programma. Come ha detto David, è più semplice per il programmatore se vengono tenuti separati (ovvero, usando le variabili per far sembrare che ci sia solo un set di file, ecc.)