TL; DR:
Singkatnya, tidak, itu tidak perlu ; mereka bisa menggunakan satu folder, dan tidak, Windows tidak menampilkan dirinya secara berbeda ke program yang dijalankan dari satu lokasi atau yang lain.
Yah, semua orang tampaknya memberikan pendapat mereka tentang ini, jadi saya akan melemparkan 2 ¢ saya. Yang lain telah menduga tentang alasan mengapa Microsoft memilih untuk membuat folder tingkat atas terpisah untuk versi 32-bit dan 64-bit program, jadi saya akan meninggalkan bagian itu (alasan terbaik adalah penjelasan David bahwa itu adalah sebagai kenyamanan bagi programmer). Tentu saja, itu tidak menjawab pertanyaan langsung mengapa ini perlu? , yang jawabannya mungkin: tidak .
Sebagai gantinya, saya akan membahas bagian utama dari pertanyaan
Apakah Windows entah bagaimana menampilkan dirinya secara berbeda ke program yang kehabisan "Program Files (x86)"?
Tidak juga, tetapi lokasi program dapat memengaruhi perilaku, tetapi tidak dengan cara yang Anda pikirkan.
Ketika Anda menjalankan suatu program, Windows mengatur lingkungan untuk menjalankannya (maksud saya dalam hal memori, pengalamatan, dll., Bukan hanya variabel lingkungan). Lingkungan ini tergantung pada konten yang dapat dieksekusi (program 32-bit dan 64-bit berbeda secara internal). Ketika Anda menjalankan program 32-bit pada sistem 64-bit, itu berjalan di subsistem 32-bit yang mengemulasi lingkungan 32-bit. Ini disebut WoW64 (WoW64 adalah singkatan dari Windows pada Windows 64-bit ) dan mirip dengan bagaimana aplikasi 16-bit dijalankan di XP menggunakan NTVDM .
Ketika Anda menjalankan sebuah program dengan atau tanpa hak admin, itu memengaruhi cara kerjanya, tetapi lokasi seharusnya tidak memengaruhinya (meskipun ada beberapa contoh ketergantungan lokasi seperti beberapa driver misalnya).
(Saya menggunakan komputer yang berbeda, jadi saya tidak bisa mengandalkan riwayat browser saya untuk melacak langkah saya, tetapi beberapa hari yang lalu ketika menjawab pertanyaan SU ini saya berakhir di pertanyaan SO ini yang menyebabkan saya ke Google PROCESSOR_ARCHITEW6432 yang mengarah ke pertanyaan SO ini dan posting blog Microsoft ini .)
Di suatu tempat di sepanjang jalan, saya membaca posting StackOverflow tentang bagaimana variabel envirnoment %processor_architecutre%
memberikan hasil yang berbeda tergantung di mana Anda menjalankan command-prompt dari (saya akan mencoba untuk menemukan kutipan yang tepat).
Jawabannya ternyata karena apakah versi 32-bit atau 64-bit prompt perintah dijalankan (yaitu, dari System32\
atau SysWoW64\
). Dengan kata lain, sementara lokasi tampaknya mempengaruhi perilaku program, itu hanya karena ada beberapa versi program, bukan karena Windows memperlakukan folder dengan cara khusus.
Ini masuk akal karena isi file yang dapat dieksekusi menentukan apakah itu 32-bit atau 64-bit, sehingga Anda bisa meletakkan salinan 32-bit dan 64-bit dari program yang sama (misalnya, foobar32.exe
dan foobar64.exe
) di folder yang sama dan ketika Anda jalankan mereka, mereka akan dimuat dengan benar (versi 64-bit akan dijalankan secara asli dan yang 32-bit akan dijalankan di lapisan emulasi WoW64).
FreePascal memungkinkan Anda untuk menginstal versi kedua DOS dan Windows dan mereka pergi dalam folder yang sama: %programfiles%\FreePascal
. Ia mengatur arsitektur yang berbeda dengan menjaga file executable ( .exe
, .sys
, .dll
, .ovr
, dll) dalam folder terpisah dan berbagi file sumber daya seperti gambar, sumber-file, dll) Tidak ada alasan teknis yang ini tidak bisa juga dilakukan untuk 32 dan Versi program 64-bit. Seperti yang David katakan, akan lebih mudah bagi programmer jika mereka disimpan secara terpisah (yaitu, menggunakan variabel untuk membuatnya terlihat seperti hanya ada satu set file, dll.)