विंडोज में "संगतता मोड" कैसे काम करता है?


जवाबों:


31

तथाकथित शिम का उपयोग करके संगतता मोड प्राप्त किया जाता है। TechNet पर एक अच्छा लेख है कि ये कैसे काम करते हैं।

विंडोज एप्लिकेशन फाइलों में एक आयात तालिका होती है जो एप्लिकेशन लोडर को बताती है कि कौन से एप्लिकेशन को डीएलएल की जरूरत है और वह किस फ़ंक्शन का उपयोग करता है। उदाहरण में संदर्भ के लिए एक प्रक्रिया हो सकती GetVersionExहै kernel32.dll। एक कार्यक्रम संगतता मोड में चलाने जाएगा, तो शिम आवेदन और शिम की जगह के बीच डाल दिया है GetVersionExसमारोह, ताकि आवेदन फोन नहीं करता है GetVersionExसे kernel32.dllलेकिन GetVersionExशिम में। फिर शर्मिंदा कार्य पिछले विंडोज संस्करणों के व्यवहार को लागू करते हैं। GetVersionExएक आसान नमूना है, प्रत्येक विंडोज़ संस्करण अपने स्वयं के संस्करण संख्याओं को वापस लौटाता है GetVersionEx, इसलिए जब एक पुराना विंडोज फेकिंग होता हैGetVersionExफ़ंक्शन अब विंडोज 7 संस्करण नंबर नहीं लौटाता है, लेकिन उदाहरण के लिए विंडोज एक्सपी संस्करण संख्या। इसलिए एप्लिकेशन का मानना ​​है कि यह विंडोज एक्सपी पर चल रहा है।

विंडोज संस्करण से विंडोज संस्करण में कुछ अन्य बदलाव भी हुए हैं। उदाहरण के लिए पुराने संस्करणों में, यदि कोई प्रोग्राम DLL को लोड करता है, तो DLL के लिए खोज पथ में वर्तमान निर्देशिका भी शामिल है। यह एक सुरक्षा समस्या है, इसलिए डिफ़ॉल्ट रूप से विंडोज के नए संस्करण वर्तमान निर्देशिका में खोज नहीं करते हैं। उचित शिम के साथ आप पुराने व्यवहार का अनुकरण कर सकते हैं।

चूंकि शिम केवल एप्लिकेशन और विंडोज एपीआई के बीच एक परत है, शिम सिर्फ वही कर सकता है जो एप्लिकेशन खुद कर सकता है। उदाहरण के लिए शिम का उपयोग UAC को रोकने या संरक्षित फ़ाइलों तक पहुँचने के लिए नहीं किया जा सकता है।

यदि आप अधिक जानना चाहते हैं, तो यहां कुछ लिंक दिए गए हैं जो आपको दिलचस्प लग सकते हैं:

विशेष रूप से Microsoft अनुप्रयोग संगतता टूलकिट देखने लायक है। यह टूल आपको ज्ञात समस्याओं, सभी उपलब्ध संगतता फ़िक्सेस और मोड्स के साथ अनुप्रयोगों पर एक ओवरव्यू देता है और प्रत्येक एप्लिकेशन पर कौन से फ़िक्स लगाए जाते हैं।


1
आपने ठोस उदाहरणों के साथ मेरी जिज्ञासा को सफलतापूर्वक संतुष्ट किया है। धन्यवाद!
काले मुसकरेला

6

मुझे लगता है कि बहुत सारी चीजें होती हैं। एक सीधा उदाहरण यह है कि एक प्रोग्राम आपके विंडोज़ संस्करण की जाँच कर सकता है, लेकिन एक नए ऑपरेटिंग सिस्टम के रिटर्न मान से भ्रमित हो सकता है। इसलिए संगतता मोड का उपयोग करके विंडोज़ को एक गलत संस्करण की रिपोर्ट करने के लिए कहा जाएगा। रेमंड चेन कुछ और बातों का उल्लेख करता है: http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx#45590


4

संगतता मोड के बारे में मेरी जानकारी यह है कि यह प्रोग्राम में झूठ बोलने के लिए कई विंडोज सिस्टम कॉल का कारण बनता है।

एक स्पष्ट उदाहरण फ़ंक्शन GetVersionEx और GetVersion हैं जो वास्तविक एक के बजाय निर्दिष्ट विंडोज संस्करण की रिपोर्ट करते हैं।

जब संगतता मोड में कोई प्रोग्राम प्रसिद्ध सिस्टम फ़ोल्डर में एक फ़ाइल को संदर्भित करता है तो पुरानी शैली के फ़ाइल पथ भी स्वचालित रूप से अनुवादित होते हैं। उदाहरण के लिए जब विंडोज 7 पर चल रहा है तो XP संगतता मोड में एक प्रोग्राम C:\Documents and Settingsका अनुवाद किया जाता C:\Users\<user>\Documentsहै।


-5

यह लेख इसे समझाने का अच्छा काम करता है।

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

विंडोज 7 के साथ, हालांकि, रेडमंड ने समस्या का समाधान प्रदान किया है: विंडोज एक्सपी मोड। विंडोज 7 स्टार्ट मेन्यू और विंडोज 7 डेस्कटॉप पर विंडोज एक्सपी शो की वर्चुअल कॉपी पर चलने वाले एप्लिकेशन को चलने देने के लिए विंडोज एक्सपी मोड वर्चुअलाइजेशन तकनीक का उपयोग करता है।


4
विंडोज एक्सपी मोड! = कम्पेटिबिलिटी मोड
केविन मार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.