2012-12-06 13 views
8

मैं एक शेल एक्सटेंशन (संदर्भ मेनू हैंडलर) दोनों Windows XP SP2 (32-बिट) और Windows 7 64 बिट के साथ संगत को विकसित करना चाहते हैं।का उपयोग विंडोज 7 में 32-बिट शेल एक्सटेंशन 64-बिट

यह 64-बिट Windows में 32-बिट खोल एक्सटेंशन चलाने के लिए संभव है, या शेल एक्सटेंशन स्थलांतरित किया जाना चाहिए/64-बिट करने के लिए फिर से बनाया विंडोज 7 64-बिट में इस्तेमाल किया जाएगा?

हैं वहाँ किसी भी नुकसान/64-बिट ऑपरेटिंग सिस्टम में 32-बिट शेल एक्सटेंशन का उपयोग करने में ज्ञात समस्याओं?

32-बिट ऐप्स 64-बिट विंडोज़ में ठीक ठीक चलते हैं, लेकिन मुझे लगता है कि मेरी समझ सही है, इसलिए शैल एक्सटेंशन इन-प्रो एक्स सर्वर एक्सप्लोरर प्रक्रिया में लोड किए गए सर्वर, जो 64-बिट विंडोज़ में 64-बिट प्रक्रिया होनी चाहिए ... या 64-बिट ओएस में चल रहे 32-बिट शैल एक्सटेंशन के लिए "32-बिट इम्यूलेशन" का एक रूप है?

+0

कोई विकल्प नहीं है। बस अपनी परियोजना में एक और कॉन्फ़िगरेशन जोड़ें जो x64 लक्ष्य के अतिरिक्त Win32 लक्ष्य का उपयोग करता है। यदि आपका कोड साफ़ है तो आपको अपने डीएलएल के x86 और x64 संस्करण दोनों को उत्पन्न करने में कोई परेशानी नहीं होगी। –

+0

@ हंसपैसेंट: यह एक कानूनी उत्तर की तरह लगता है। –

+0

@HansPassant: मैं भी आश्चर्य है कि अगर 32-बिट और 64-बिट शेल एक्सटेंशन _different_ GUIDs होना चाहिए। –

उत्तर

10

एक शेल एक्सटेंशन सिर्फ एक DLL है, और नियम है कि 32-बिट अनुप्रयोगों केवल 32-बिट DLLs लोड कर सकते हैं है, और 64 बिट अनुप्रयोगों केवल लोड 64-बिट DLLs। इसके अलावा कोई रास्ता नहीं है।

एक 32-बिट शेल एक्सटेंशन अभी भी एक 64-बिट सिस्टम पर उपयोगी इसका मतलब है के रूप में है कि किसी भी 32-बिट तीसरे दल के अनुप्रयोगों है कि शेल एक्सटेंशन लोड काम करेंगे हो सकता है। उदाहरण के लिए, TortoiseSVN 32- और 64-बिट संस्करणों के साथ जहाजों को स्थापित और स्थापित करता है, और 64-बिट विंडोज़ पर आप अभी भी 32-बिट अनुप्रयोगों (जैसे किसी तृतीय-पक्ष फ़ाइल प्रबंधक) से TortoiseSVN संदर्भ मेनू तक पहुंच सकते हैं।

लेकिन एक्सप्लोरर पर ही 64-बिट Windows 64-बिट निवासी है और इसलिए आप अपने विस्तार के एक 64-बिट संस्करण की जरूरत है अगर आप इसे एक्सप्लोरर में काम करना चाहते हैं।

0

शैल एक्सटेंशन COM घटक हैं। यदि आप इसे आउट-ऑफ-प्रोसेस सर्वर के रूप में स्थापित करते हैं, तो विंडोज (डीसीओएम) को सभी 32 < -> 64-बिट मार्शलिंग का ख्याल रखना चाहिए।

एमआईडीएल कंपाइलर तब 64-बिट स्टब बना देगा जो प्रक्रिया में लोड होता है।

+2

यह वास्तव में ऐसा काम नहीं करता है हालांकि ... –

+1

यह गलत है।सामग्री मेनू हैंडलर इन-प्रोसेस एक्सटेंशन हैं और प्रक्रिया के बाहर के रूप में लागू नहीं किए जा सकते हैं। https://msdn.microsoft.com/en-us/library/windows/desktop/dd758089(v=vs.85).aspx। वितरित COM (DCOM) लागू नहीं होता – MickyD

+0

@ मिकी आपका लिंक आपके दावे का समर्थन नहीं करता है। एक और संदर्भ है? –

0

आप 64-बिट Windows में xplorer² की तरह एक 32-बिट एक्सप्लोरर का उपयोग कर सकते। वे 32-बिट डीएलएल एक्सटेंशन को संभाल सकते हैं जो खोज सामग्री के रूप में उपयोग कर सकते हैं, डेटा का पूर्वावलोकन कर सकते हैं और वे संदर्भ मेनू में भी प्रदर्शित हो सकते हैं। अंतर्निर्मित एक्सप्लोरर 64-बिट है, जो 32-बिट एक्सटेंशन को अनदेखा करता है।