कैसे करता है संगतता मोड Windows में आंतरिक रूप से काम करते हैं?
कैसे करता है संगतता मोड Windows में आंतरिक रूप से काम करते हैं?
जवाबों:
तथाकथित शिम का उपयोग करके संगतता मोड प्राप्त किया जाता है। TechNet पर एक अच्छा लेख है कि ये कैसे काम करते हैं।
विंडोज एप्लिकेशन फाइलों में एक आयात तालिका होती है जो एप्लिकेशन लोडर को बताती है कि कौन से एप्लिकेशन को डीएलएल की जरूरत है और वह किस फ़ंक्शन का उपयोग करता है। उदाहरण में संदर्भ के लिए एक प्रक्रिया हो सकती GetVersionEx
है kernel32.dll
। एक कार्यक्रम संगतता मोड में चलाने जाएगा, तो शिम आवेदन और शिम की जगह के बीच डाल दिया है GetVersionEx
समारोह, ताकि आवेदन फोन नहीं करता है GetVersionEx
से kernel32.dll
लेकिन GetVersionEx
शिम में। फिर शर्मिंदा कार्य पिछले विंडोज संस्करणों के व्यवहार को लागू करते हैं। GetVersionEx
एक आसान नमूना है, प्रत्येक विंडोज़ संस्करण अपने स्वयं के संस्करण संख्याओं को वापस लौटाता है GetVersionEx
, इसलिए जब एक पुराना विंडोज फेकिंग होता हैGetVersionEx
फ़ंक्शन अब विंडोज 7 संस्करण नंबर नहीं लौटाता है, लेकिन उदाहरण के लिए विंडोज एक्सपी संस्करण संख्या। इसलिए एप्लिकेशन का मानना है कि यह विंडोज एक्सपी पर चल रहा है।
विंडोज संस्करण से विंडोज संस्करण में कुछ अन्य बदलाव भी हुए हैं। उदाहरण के लिए पुराने संस्करणों में, यदि कोई प्रोग्राम DLL को लोड करता है, तो DLL के लिए खोज पथ में वर्तमान निर्देशिका भी शामिल है। यह एक सुरक्षा समस्या है, इसलिए डिफ़ॉल्ट रूप से विंडोज के नए संस्करण वर्तमान निर्देशिका में खोज नहीं करते हैं। उचित शिम के साथ आप पुराने व्यवहार का अनुकरण कर सकते हैं।
चूंकि शिम केवल एप्लिकेशन और विंडोज एपीआई के बीच एक परत है, शिम सिर्फ वही कर सकता है जो एप्लिकेशन खुद कर सकता है। उदाहरण के लिए शिम का उपयोग UAC को रोकने या संरक्षित फ़ाइलों तक पहुँचने के लिए नहीं किया जा सकता है।
यदि आप अधिक जानना चाहते हैं, तो यहां कुछ लिंक दिए गए हैं जो आपको दिलचस्प लग सकते हैं:
विशेष रूप से Microsoft अनुप्रयोग संगतता टूलकिट देखने लायक है। यह टूल आपको ज्ञात समस्याओं, सभी उपलब्ध संगतता फ़िक्सेस और मोड्स के साथ अनुप्रयोगों पर एक ओवरव्यू देता है और प्रत्येक एप्लिकेशन पर कौन से फ़िक्स लगाए जाते हैं।
मुझे लगता है कि बहुत सारी चीजें होती हैं। एक सीधा उदाहरण यह है कि एक प्रोग्राम आपके विंडोज़ संस्करण की जाँच कर सकता है, लेकिन एक नए ऑपरेटिंग सिस्टम के रिटर्न मान से भ्रमित हो सकता है। इसलिए संगतता मोड का उपयोग करके विंडोज़ को एक गलत संस्करण की रिपोर्ट करने के लिए कहा जाएगा। रेमंड चेन कुछ और बातों का उल्लेख करता है: http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx#45590
संगतता मोड के बारे में मेरी जानकारी यह है कि यह प्रोग्राम में झूठ बोलने के लिए कई विंडोज सिस्टम कॉल का कारण बनता है।
एक स्पष्ट उदाहरण फ़ंक्शन GetVersionEx और GetVersion हैं जो वास्तविक एक के बजाय निर्दिष्ट विंडोज संस्करण की रिपोर्ट करते हैं।
जब संगतता मोड में कोई प्रोग्राम प्रसिद्ध सिस्टम फ़ोल्डर में एक फ़ाइल को संदर्भित करता है तो पुरानी शैली के फ़ाइल पथ भी स्वचालित रूप से अनुवादित होते हैं। उदाहरण के लिए
जब विंडोज 7 पर चल रहा है तो XP संगतता मोड में एक प्रोग्राम C:\Documents and Settings
का अनुवाद किया जाता C:\Users\<user>\Documents
है।
यह लेख इसे समझाने का अच्छा काम करता है।
http://arstechnica.com/information-technology/2010/01/windows-xp-mode/
विंडोज 7 के साथ, हालांकि, रेडमंड ने समस्या का समाधान प्रदान किया है: विंडोज एक्सपी मोड। विंडोज 7 स्टार्ट मेन्यू और विंडोज 7 डेस्कटॉप पर विंडोज एक्सपी शो की वर्चुअल कॉपी पर चलने वाले एप्लिकेशन को चलने देने के लिए विंडोज एक्सपी मोड वर्चुअलाइजेशन तकनीक का उपयोग करता है।