64-बिट्स के विंडोज 7 के रिलीज के साथ, विंडोज निर्देशिका में फ़ोल्डरों के सामान्य आवंटन में थोड़ा बदलाव आया था। विंडोज 7, विंडोज 8 और विंडोज 10 के 64-बिट संस्करण में दो नए फ़ोल्डर्स शामिल हैं। वे हैं Sysnative तथा SysWOW64 फ़ोल्डरों। यह केवल 64-बिट विंडोज़ में है। यदि आप 64-बिट मशीन पर 32-बिट विंडोज चलाते हैं, तो आप उन्हें नहीं देख पाएंगे। 32-बिट मशीन पर 32-बिट विंडोज चलते समय आप उन्हें नहीं देख पाएंगे।
विंडोज निर्देशिका के बाहर एक और फ़ोल्डर है और इसे कहा जाता है कार्यक्रम फ़ाइलें (x86) । हम फ़ोल्डर प्रोग्राम फ़ाइलों के नाम पर उपयोग किए जाते हैं जिनमें हमारे कार्यक्रमों के निष्पादन योग्य घर होते हैं। 64-बिट सिस्टम में, 64-बिट प्रोग्राम प्रोग्राम फ़ाइलें फ़ोल्डर में संग्रहीत होते हैं जबकि 32-बिट प्रोग्राम प्रोग्राम फ़ाइलों (x86) में रखे जाते हैं। हालांकि, विंडोज 64-बिट मशीन पर 32-बिट प्रोग्राम चलाने के लिए इम्यूलेशन की तरह कुछ उपयोग करता है। और इसलिए, विंडोज़ (64 बिट) के तहत सिस्टम फ़ोल्डरों के बारे में जानने और समझने की आवश्यकता है ताकि आप जान सकें कि आप जिस फ़ाइल को चाहते हैं उसे कैसे पहुंचाया जाए।
32-बिट मशीनों के विपरीत, जहां 32-बिट डीएलएल संग्रहीत किए जाते हैं सिस्टम 32 फ़ोल्डर, Windows32 का 64-बिट संस्करण सिस्टम 32 फ़ोल्डर में 64-बिट्स से संबंधित डीएलएल स्टोर करता है। यह प्रोग्रामिंग उद्देश्यों को कम करने और पिछड़े संगतता प्रदान करने के लिए है। यही है, यदि 64-बिट प्रोग्राम सिस्टम कोड को उसके कोड में संदर्भित करता है, तो उसे कॉल होने पर 64-बिट DLL स्वचालित रूप से प्राप्त होगा। यह डेवलपर्स की सहायता करता है क्योंकि उन्हें विंडोज 64-बिट के लिए अपने प्रोग्राम में कोड बदलने की ज़रूरत नहीं है।
संक्षेप में, विंडोज़ ने सभी 32-बिट डीएलएल को विंडोज निर्देशिका में सिस्टम 32 फ़ोल्डर से किसी अन्य फ़ोल्डर में स्थानांतरित कर दिया ताकि पिछले कार्यक्रमों को एपीआई का उपयोग करते समय उचित डीएलएल प्राप्त करने के लिए रिकोड नहीं किया जा सके - 64-बिट के उन्नयन के बाद। समस्या तब होती है जब 32 बिट अनुप्रयोग System32 फ़ोल्डर तक पहुंचने का प्रयास करता है। इस मामले में, प्रोग्राम क्रैश हो जाएगा क्योंकि यह 64-बिट DLL को संभालने के लिए नहीं लिखा गया है।
विंडोज 64-बिट में SysWOW64 फ़ोल्डर
सभी 32-बिट डीएलएल को नए स्थानांतरित कर दिया गया है SysWOW64 फ़ोल्डर विंडोज 7, विंडोज 8 और विंडोज 10 के 64-बिट संस्करण में, इसलिए जब 32-बिट प्रोग्राम 32-बिट डीएलएल पर कॉल करते हैं, तो उन्हें SysWOW64 फ़ोल्डर तक पहुंचना होगा।
आप महसूस कर सकते हैं कि डेवलपर्स को DLL फ़ंक्शंस को SysWOW64 फ़ोल्डर में इंगित करने के लिए अपने प्रोग्राम और एप्लिकेशन स्कैन करना होगा। लेकिन माइक्रोसॉफ्ट ने पहले से ही इसका ख्याल रखा है। यदि यह 32-बिट प्रोग्राम है जो कॉल कर रहा है C: Windows System32, एक एमुलेटर पथ को रीडायरेक्ट करेगा C: Windows SysWOW64। यही है, विंडोज 64-बिट में 32-बिट प्रोग्राम चलाने के लिए, एक एमुलेटर का उपयोग किया जाता है, ताकि उचित पिछड़ा संगतता हो और DLL फ़ाइलों को कॉल करते समय त्रुटियों से बचें।
विंडोज 64-बिट में Sysnative फ़ोल्डर
ऐसे मामले हो सकते हैं जहां 32-बिट प्रोग्राम या एप्लिकेशन को वास्तव में 64-बिट DLL की आवश्यकता हो सकती है। उस स्थिति में, आपको पुनर्निर्देशन फ़ोल्डर का उपयोग करना होगा Sysnative । आप SysNative को वर्चुअल फ़ोल्डर और उपनाम मान सकते हैं जो System32 फ़ोल्डर को इंगित करता है। यह आपके सिस्टम पर शारीरिक रूप से मौजूद नहीं है। तो यदि आपके 32-बिट प्रोग्राम को 64-बिट DLL तक पहुंचने की आवश्यकता है, तो इसका उपयोग न करें C: Windows System32 क्योंकि 32-बिट प्रोग्राम एमुलेटर इसे 32-बिट डीएलएल फ़ोल्डर में ले जाएगा जिसे SysWOW64 कहा जाता है। इसके बजाय, उपयोग करें C: Windows SysNative डीएलएल कार्यक्रम के रास्ते के रूप में। पथ में Sysnative का उपयोग SysWOW64 फ़ोल्डर के बजाय इसे System32 फ़ोल्डर पर रीडायरेक्ट करेगा।
यदि आप फ़ाइल विंडोज एक्सप्लोरर खोलते हैं, तो आपको C: Windows में Sysnative फ़ोल्डर नहीं मिलेगा। यहां तक कि यदि आप छुपा और सिस्टम फ़ोल्डर्स दिखाने के लिए फ़ोल्डर विकल्प सेट करते हैं। ऐसा इसलिए है क्योंकि, 64-बिट विंडोज़ में चलने पर Windows फ़ाइल एक्सप्लोरर 64-बिट प्रोग्राम है, और Sysnative फ़ोल्डर केवल 32-बिट प्रोग्राम से दृश्यमान और सुलभ है।
सारांश में:
- सिस्टम 32 फ़ोल्डर में 64-बिट DLL फ़ाइलें शामिल हैं।
- SysWOW64 में 32-बिट DLL फ़ाइलें हैं, और 32-बिट प्रोग्राम इस फ़ोल्डर में स्वत: रीडायरेक्ट किए गए हैं
- Sysnative एक पुनर्निर्देशन फ़ोल्डर है जो 32-बिट प्रोग्राम 64-बिट DLL को कॉल करने की अनुमति देता है।
अतिरिक्त पढ़ा: एमएसडीएन।