TL; DR:
Özetlemek gerekirse, hayır gerekli değildir ; onlar olabilir tek bir klasör kullanmış ve hayır, Windows, bir yerden veya başka çalıştırılıyor bir programa farklı kendini belli etmez.
Eh, herkes bu konudaki düşüncelerini atıyor gibi görünüyor, bu yüzden 2 my 'ime atıyorum. Diğerleri zaten üzere sebeplere zannettiği neden Microsoft programlarının 32-bit ve 64-bit sürümleri için ayrı üst düzey klasör oluşturmak için seçti, bu yüzden o kısmı bırakacağım (iyi neden o kadar olduğunu David'in açıklama oldu programcılara kolaylık). Tabii ki o zaman bile, bu neden gerekli olsa bile doğrudan soruyu tam olarak ele almıyor. , hangi cevap olduğu tahmin edilmektedir: öyle değil .
Bunun yerine, sorunun ana gövdesine değineceğim
Windows bir şekilde kendini "Program Files (x86)" dışında çalışan bir programdan farklı gösteriyor mu?
Pek değil, ama programın yeri olabilir davranışını etkilemez, ama düşündüğün olur bir şekilde.
Bir programı çalıştırdığınızda, Windows çalıştırılacağı bir ortam oluşturur (yalnızca ortam değişkenlerini değil, bellek, adresleme vb. Anlamında). Bu ortam yürütülebilir dosyanın içeriğine bağlıdır (32 bit ve 64 bit programlar dahili olarak farklılık gösterir). 64 bit sistemde 32 bit program çalıştırdığınızda, 32 bit ortam taklit eden 32 bit alt sistemde çalışır. Bu denir WoW64 (WoW64 açılımı Windows'un 64 bit Windows ) ve 16 bit uygulamalar kullanarak XP çalışacağı bu şekline benzer NTVDM .
İle veya yönetici ayrıcalıkları olmayan bir program çalıştırdığınızda, bu nasıl çalıştırdığını etkiler, ancak konum olmalıdır (örneğin bazı sürücüler gibi konum bağımlılık bazı örnekler olmasına rağmen) bunu etkilemez.
(Ben farklı bir bilgisayar kullanıyorum, bu yüzden benim tarayıcı geçmişine güvenemez adımlarımı sarfınazar, ancak diğer gün cevaplarken bu SU soruyu ben de bitti bu SO soru bana neden Google PROCESSOR_ARCHITEW6432 yol bu SO soru ve bu Microsoft blog yazısı .)
Yol boyunca bir yerlerde, envirnoment değişkeninin %processor_architecutre%
komut istemini nereden çalıştırdığınıza bağlı olarak farklı sonuçlar verdiği hakkında bir StackOverflow gönderisini okudum (tam alıntıyı bulmaya çalışacağım).
Yanıt, komut isteminin 32 bit veya 64 bit sürümünün çalıştırılmasından kaynaklanıyordu (yani, System32\
veya SysWoW64\
). Başka bir deyişle, konum programın davranışını etkiliyor gibi görünse de , bunun nedeni yalnızca programın farklı sürümleri olduğudur, çünkü Windows klasörü özel bir şekilde ele alır.
Yürütülebilir dosyanın içeriğini 32-bit veya 64-bit olup olmadığını dikte, bu mantıklıdır, bu yüzden 32 bit ve 64 bit aynı programın kopyasını (örneğin hem koyabilirsiniz foobar32.exe
ve foobar64.exe
sizi aynı klasörde) ve Bunları uygulayın, doğru yüklenecekler (64-bit sürüm doğal olarak çalıştırılacak ve 32-bit sürüm WoW64 öykünme katmanında çalıştırılacak).
FreePascal DOS ve Windows iki sürümünü yüklemek için izin verir ve aynı klasörde gidin: %programfiles%\FreePascal
. O (çalıştırılabilir dosyaları tutarak farklı mimarileri yönetir .exe
, .sys
, .dll
, .ovr
vb kaynak dosyaları,) bu da 32 ve için yapılması olamayacağını hiçbir teknik neden yoktur ayrı klasörlerde, vs.) ve resimler gibi kaynak dosya paylaşımı Bir programın 64 bit sürümleri. David'in dediği gibi, programcı için ayrı tutulursa daha kolaydır (örneğin, yalnızca bir dosya grubu gibi görünmesini sağlamak için değişkenler kullanmak vb.)