TL; DR:
เพื่อสรุปไม่มีก็ไม่จำเป็น ; พวกเขาสามารถใช้โฟลเดอร์เดียวและไม่มี Windows ไม่แสดงตัวตนที่แตกต่างจากโปรแกรมที่กำลังเรียกใช้จากที่หนึ่งหรืออีกที่หนึ่ง
ทุกคนดูเหมือนจะโยนความคิดเห็นของพวกเขาในเรื่องนี้ดังนั้นฉันจะโยนใน 2 my ของฉัน คนอื่นคาดเดาแล้วว่าทำไม Microsoft เลือกสร้างโฟลเดอร์ระดับบนสุดแยกต่างหากสำหรับโปรแกรมรุ่น 32 บิตและ 64 บิตดังนั้นฉันจะออกจากส่วนนั้น (เหตุผลที่ดีที่สุดคือคำอธิบายของ David ว่ามันเป็น อำนวยความสะดวกให้โปรแกรมเมอร์) แน่นอนว่ายังไม่ได้ตอบคำถามโดยตรงว่าทำไมถึงจำเป็น ซึ่งคำตอบคือสันนิษฐานว่า: มันไม่ได้
ฉันจะพูดถึงเนื้อหาหลักของคำถามแทน
Windows นำเสนอตัวเองแตกต่างจากโปรแกรมที่เรียกว่า "Program Files (x86)" หรือไม่?
ไม่ใช่จริง ๆ แต่ตำแหน่งของโปรแกรมอาจมีผลต่อพฤติกรรม แต่ไม่ใช่ในแบบที่คุณคิด
เมื่อคุณเรียกใช้โปรแกรม Windows จะตั้งค่าสภาพแวดล้อมในการใช้งาน (ฉันหมายถึงหน่วยความจำการกำหนดที่อยู่ ฯลฯ ไม่ใช่แค่ตัวแปรสภาพแวดล้อม) สภาพแวดล้อมนี้ขึ้นอยู่กับเนื้อหาของไฟล์เรียกทำงาน (โปรแกรม 32- บิตและ 64- บิตต่างกันภายใน) เมื่อคุณรันโปรแกรม 32 บิตบนระบบ 64 บิตมันจะทำงานในระบบย่อย 32 บิตซึ่งจำลองสภาพแวดล้อมแบบ 32 บิต มันถูกเรียกว่าWOW64 (WOW64 ยืนสำหรับWindows บน Windows 64 บิต ) และมีความคล้ายคลึงกับวิธีการปพลิเคชัน 16 บิตจะทำงานใน XP ใช้NTVDM
เมื่อคุณเรียกใช้โปรแกรมที่มีหรือไม่มีสิทธิ์ของผู้ดูแลระบบจะมีผลกับวิธีการใช้งาน แต่ตำแหน่งไม่ควรส่งผลกระทบต่อโปรแกรม (แม้ว่าจะมีตัวอย่างของการพึ่งพาตำแหน่งเช่นโปรแกรมควบคุมบางตัว)
(ผมใช้คอมพิวเตอร์ที่แตกต่างกันดังนั้นผมจึงไม่สามารถพึ่งพาประวัติเบราเซอร์ของฉันที่จะเปลี่ยนใจขั้นตอนของฉัน แต่วันอื่น ๆ ในขณะที่ตอบคำถามนี้ SUฉันสิ้นสุดขึ้นที่นี้คำถาม SOซึ่งเกิดจากฉันไปGoogle PROCESSOR_ARCHITEW6432ซึ่งนำไปสู่การนี้ดังนั้นคำถามและการโพสต์บล็อกของ Microsoftนี้)
ฉันอ่านโพสต์ StackOverflow เกี่ยวกับวิธีการที่ตัวแปรสภาพแวดล้อม%processor_architecutre%
ให้ผลลัพธ์ที่แตกต่างกันขึ้นอยู่กับตำแหน่งที่คุณเรียกใช้พรอมต์คำสั่งจาก (ฉันจะพยายามหาคำพูดที่แน่นอน)
คำตอบนั้นเกิดขึ้นไม่ว่าจะเป็นพรอมต์คำสั่งรุ่น 32 บิตหรือ 64 บิต (เช่นจากSystem32\
หรือSysWoW64\
) กล่าวอีกนัยหนึ่งในขณะที่ตำแหน่งดูเหมือนจะส่งผลกระทบต่อการทำงานของโปรแกรม แต่เป็นเพราะมีโปรแกรมรุ่นต่าง ๆ ไม่ใช่เพราะ Windows ปฏิบัติต่อโฟลเดอร์ในลักษณะพิเศษ
สิ่งนี้สมเหตุสมผลเนื่องจากเนื้อหาของไฟล์ที่เรียกใช้งานได้กำหนดว่าเป็น 32- บิตหรือ 64- บิตดังนั้นคุณสามารถใส่ทั้งสำเนา 32 บิตและ 64- บิตของโปรแกรมเดียวกัน (เช่นfoobar32.exe
และfoobar64.exe
) ในโฟลเดอร์เดียวกันและเมื่อคุณ รันพวกมันจะถูกโหลดอย่างถูกต้อง (เวอร์ชั่น 64- บิตจะถูกเรียกใช้แบบดั้งเดิมและ 32- บิตจะทำงานในเลเยอร์การจำลอง WoW64)
FreePascal ช่วยให้คุณสามารถติดตั้งทั้ง DOS และ Windows %programfiles%\FreePascal
รุ่นและพวกเขาไปในโฟลเดอร์เดียวกัน: จะจัดการสถาปัตยกรรมที่แตกต่างกันโดยการเก็บรักษาไฟล์ปฏิบัติการ ( .exe
, .sys
, .dll
, .ovr
ฯลฯ ) ในโฟลเดอร์ที่แยกต่างหากและแชร์ไฟล์ทรัพยากรเหมือนภาพแหล่งที่มาของไฟล์อื่น ๆ ) ไม่มีเหตุผลทางเทคนิคที่ว่านี้อาจจะยังไม่ได้รับการดำเนินการสำหรับ 32 และเป็น โปรแกรมเวอร์ชัน 64 บิต เช่นเดียวกับ David กล่าวว่ามันง่ายกว่าสำหรับโปรแกรมเมอร์หากแยกไว้ (เช่นการใช้ตัวแปรเพื่อทำให้ดูเหมือนว่ามีไฟล์ชุดเดียวเท่านั้น)