“ โหมดความเข้ากันได้” ใน Windows ทำงานอย่างไร


คำตอบ:


31

โหมดความเข้ากันได้นั้นสามารถทำได้โดยใช้ shims มีบทความที่ดีเกี่ยวกับ TechNet ที่อธิบายวิธีการทำงานของ

ไฟล์แอปพลิเคชัน Windows มีตารางนำเข้าซึ่งแจ้งให้แอปพลิเคชันโหลดเดอร์ว่า DLLs ต้องการแอปพลิเคชันใดและฟังก์ชั่นใดที่ใช้ในการทำงาน อาจกระบวนการเช่นการอ้างอิงในGetVersionEx kernel32.dllเมื่อโปรแกรมจะทำงานในโหมดที่เข้ากันได้ shim จะถูกใส่ระหว่างแอปพลิเคชันและ shim แทนที่GetVersionExฟังก์ชันดังนั้นแอปพลิเคชันจะไม่เรียกใช้แต่GetVersionExมาจากใน shim ฟังก์ชั่น shimmed จะใช้พฤติกรรมของ Windows รุ่นก่อนหน้า เป็นตัวอย่างง่าย ๆ แต่ละรุ่นของ Windows จะส่งคืนหมายเลขรุ่นของตัวเองดังนั้นเมื่อทำการแกล้งทำ Windows เก่า ๆkernel32.dllGetVersionExGetVersionExGetVersionExGetVersionExฟังก์ชั่นตอนนี้ไม่ส่งคืนหมายเลขรุ่น Windows 7 แต่ตัวอย่างเช่นหมายเลขรุ่น Windows XP ดังนั้นแอปพลิเคชันจะเชื่อว่ากำลังทำงานบน Windows XP

นอกจากนี้ยังมีการเปลี่ยนแปลงอื่น ๆ จากรุ่น Windows เป็นรุ่น Windows ในเวอร์ชันที่เก่ากว่าเช่นหากโปรแกรมโหลด DLL เส้นทางการค้นหา DLL จะรวมไดเรกทอรีปัจจุบันไว้ด้วย นี่เป็นปัญหาด้านความปลอดภัยดังนั้น Windows รุ่นใหม่กว่าโดยค่าเริ่มต้นจะไม่ค้นหาในไดเรกทอรีปัจจุบัน ด้วย shim ที่เหมาะสมคุณสามารถจำลองพฤติกรรมเก่า

เนื่องจาก shims เป็นเพียงเลเยอร์ระหว่างแอปพลิเคชันและ Windows API ดังนั้น shim จึงสามารถทำสิ่งที่แอปพลิเคชันสามารถทำได้เอง shim ไม่สามารถใช้ตัวอย่างเพื่อหลีกเลี่ยง UAC หรือเข้าถึงไฟล์ที่ได้รับการป้องกัน

หากคุณต้องการทราบข้อมูลเพิ่มเติมนี่คือลิงค์บางส่วนที่คุณอาจสนใจ:

โดยเฉพาะชุดเครื่องมือความเข้ากันได้ของ Microsoft Application มีค่าดู เครื่องมือนี้จะให้ภาพรวมของแอปพลิเคชันที่มีปัญหาที่ทราบการแก้ไขปัญหาความเข้ากันได้และโหมดที่ใช้งานได้ทั้งหมดและการแก้ไขที่ใช้กับแต่ละแอปพลิเคชัน


1
คุณประสบความสำเร็จในการอยากรู้อยากเห็นของฉันด้วยตัวอย่างที่เป็นรูปธรรม ขอขอบคุณ!
ผักคะน้า Muscarella

6

ฉันคิดว่าสิ่งต่าง ๆ เกิดขึ้นมากมาย ตัวอย่างที่ตรงไปตรงมาคือโปรแกรมอาจตรวจสอบรุ่น windows ของคุณ แต่สับสนกับค่าที่ส่งคืนของระบบปฏิบัติการใหม่ ดังนั้นการใช้โหมดความเข้ากันได้จะบอกให้ windows รายงานรุ่นที่ผิด Raymond Chen กล่าวถึงบางสิ่งเพิ่มเติม: http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx#45590


4

ความรู้ของฉันเกี่ยวกับโหมดที่เข้ากันได้คือมันทำให้ระบบ Windows หลายสายเรียกเข้าสู่โปรแกรม

ตัวอย่างหนึ่งที่เห็นได้ชัดคือฟังก์ชั่นGetVersionExและGetVersionซึ่งรายงานเวอร์ชั่น Windows ที่ระบุแทนที่จะเป็นของจริง

เส้นทางไฟล์แบบเก่าจะถูกแปลโดยอัตโนมัติเมื่อโปรแกรมในโหมดความเข้ากันได้อ้างอิงถึงไฟล์ในโฟลเดอร์ระบบที่รู้จักกันดี ตัวอย่างเช่นC:\Documents and Settingsแปลเป็นC:\Users\<user>\Documents เมื่อทำงานบน Windows 7 โปรแกรมในโหมดความเข้ากันได้ XP


-5

บทความนี้ใช้อธิบายได้ดี

http://arstechnica.com/information-technology/2010/01/windows-xp-mode/

อย่างไรก็ตามด้วย Windows 7 Redmond ได้จัดหาวิธีแก้ไขปัญหา: โหมด Windows XP โหมด Windows XP ใช้เทคโนโลยีการจำลองเสมือนเพื่อให้แอปพลิเคชันทำงานบนสำเนาเสมือนจริงของ Windows XP ที่แสดงในเมนูเริ่มของ Windows 7 และบนเดสก์ท็อป Windows 7


4
โหมด Windows XP! = โหมดความเข้ากันได้
Kevin Mark
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.