อย่างไรโหมดความเข้ากันได้ใน Windows ทำงานภายใน?
อย่างไรโหมดความเข้ากันได้ใน Windows ทำงานภายใน?
คำตอบ:
โหมดความเข้ากันได้นั้นสามารถทำได้โดยใช้ shims มีบทความที่ดีเกี่ยวกับ TechNet ที่อธิบายวิธีการทำงานของ
ไฟล์แอปพลิเคชัน Windows มีตารางนำเข้าซึ่งแจ้งให้แอปพลิเคชันโหลดเดอร์ว่า DLLs ต้องการแอปพลิเคชันใดและฟังก์ชั่นใดที่ใช้ในการทำงาน อาจกระบวนการเช่นการอ้างอิงในGetVersionEx
kernel32.dll
เมื่อโปรแกรมจะทำงานในโหมดที่เข้ากันได้ shim จะถูกใส่ระหว่างแอปพลิเคชันและ shim แทนที่GetVersionEx
ฟังก์ชันดังนั้นแอปพลิเคชันจะไม่เรียกใช้แต่GetVersionEx
มาจากใน shim ฟังก์ชั่น shimmed จะใช้พฤติกรรมของ Windows รุ่นก่อนหน้า เป็นตัวอย่างง่าย ๆ แต่ละรุ่นของ Windows จะส่งคืนหมายเลขรุ่นของตัวเองดังนั้นเมื่อทำการแกล้งทำ Windows เก่า ๆkernel32.dll
GetVersionEx
GetVersionEx
GetVersionEx
GetVersionEx
ฟังก์ชั่นตอนนี้ไม่ส่งคืนหมายเลขรุ่น Windows 7 แต่ตัวอย่างเช่นหมายเลขรุ่น Windows XP ดังนั้นแอปพลิเคชันจะเชื่อว่ากำลังทำงานบน Windows XP
นอกจากนี้ยังมีการเปลี่ยนแปลงอื่น ๆ จากรุ่น Windows เป็นรุ่น Windows ในเวอร์ชันที่เก่ากว่าเช่นหากโปรแกรมโหลด DLL เส้นทางการค้นหา DLL จะรวมไดเรกทอรีปัจจุบันไว้ด้วย นี่เป็นปัญหาด้านความปลอดภัยดังนั้น Windows รุ่นใหม่กว่าโดยค่าเริ่มต้นจะไม่ค้นหาในไดเรกทอรีปัจจุบัน ด้วย shim ที่เหมาะสมคุณสามารถจำลองพฤติกรรมเก่า
เนื่องจาก shims เป็นเพียงเลเยอร์ระหว่างแอปพลิเคชันและ Windows API ดังนั้น shim จึงสามารถทำสิ่งที่แอปพลิเคชันสามารถทำได้เอง shim ไม่สามารถใช้ตัวอย่างเพื่อหลีกเลี่ยง UAC หรือเข้าถึงไฟล์ที่ได้รับการป้องกัน
หากคุณต้องการทราบข้อมูลเพิ่มเติมนี่คือลิงค์บางส่วนที่คุณอาจสนใจ:
โดยเฉพาะชุดเครื่องมือความเข้ากันได้ของ Microsoft Application มีค่าดู เครื่องมือนี้จะให้ภาพรวมของแอปพลิเคชันที่มีปัญหาที่ทราบการแก้ไขปัญหาความเข้ากันได้และโหมดที่ใช้งานได้ทั้งหมดและการแก้ไขที่ใช้กับแต่ละแอปพลิเคชัน
ฉันคิดว่าสิ่งต่าง ๆ เกิดขึ้นมากมาย ตัวอย่างที่ตรงไปตรงมาคือโปรแกรมอาจตรวจสอบรุ่น windows ของคุณ แต่สับสนกับค่าที่ส่งคืนของระบบปฏิบัติการใหม่ ดังนั้นการใช้โหมดความเข้ากันได้จะบอกให้ windows รายงานรุ่นที่ผิด Raymond Chen กล่าวถึงบางสิ่งเพิ่มเติม: http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx#45590
ความรู้ของฉันเกี่ยวกับโหมดที่เข้ากันได้คือมันทำให้ระบบ Windows หลายสายเรียกเข้าสู่โปรแกรม
ตัวอย่างหนึ่งที่เห็นได้ชัดคือฟังก์ชั่นGetVersionExและGetVersionซึ่งรายงานเวอร์ชั่น Windows ที่ระบุแทนที่จะเป็นของจริง
เส้นทางไฟล์แบบเก่าจะถูกแปลโดยอัตโนมัติเมื่อโปรแกรมในโหมดความเข้ากันได้อ้างอิงถึงไฟล์ในโฟลเดอร์ระบบที่รู้จักกันดี ตัวอย่างเช่นC:\Documents and Settings
แปลเป็นC:\Users\<user>\Documents
เมื่อทำงานบน Windows 7 โปรแกรมในโหมดความเข้ากันได้ XP
บทความนี้ใช้อธิบายได้ดี
http://arstechnica.com/information-technology/2010/01/windows-xp-mode/
อย่างไรก็ตามด้วย Windows 7 Redmond ได้จัดหาวิธีแก้ไขปัญหา: โหมด Windows XP โหมด Windows XP ใช้เทคโนโลยีการจำลองเสมือนเพื่อให้แอปพลิเคชันทำงานบนสำเนาเสมือนจริงของ Windows XP ที่แสดงในเมนูเริ่มของ Windows 7 และบนเดสก์ท็อป Windows 7