2010-03-31 5 views
8

इस पिछले प्रश्न में < How to get COM Server for Excel written in VB.NET installed and registered in Automation Servers list?> एक उदाहरण है कि रजिस्ट्री कुंजी का उपयोग करके पूर्ण पथ कैसे बनाएं वीएस 2008. पिछले उत्तर में सबकुछ ठीक से काम करता है जिसे मैं सेट कर रहा हूं (mScoree.dll में रजिस्ट्री संपादक का उपयोग करके) mscoree.dll काम नहीं कर रहा है (जिसका अर्थ है कि ऐसा कुछ नहीं लगता है)।क्लाइंट मशीन पर पंजीकृत एक्सेल के लिए लिखे गए एक COM सर्वर को पंजीकृत करने में समस्या (mscoree.dll पर पूरा पथ सेट नहीं कर सकता)

पूर्ण रजिस्ट्री पथ है:

HKEY_CLASSES_ROOT \ CLSID \ {my_GUID} \ InprocServer32 \ (डिफ़ॉल्ट)

और मूल्य मैं स्थापित करने हूँ:

[SystemFolder] mscoree.dll

मैं कुछ भी डाल सकता हूं (पूर्ण पथ हार्डकोडिंग सहित) लेकिन सेटिंग कोई फर्क नहीं पड़ता है और रजिस्ट्री में हमेशा किसी भी पथ के बिना mscoree.dll होता है।

मैंने वीएस के माध्यम से रजिस्ट्री पथ में एक और मूल्य जोड़ने का प्रयास किया है और यह [SystemFolder] द्वारा निर्दिष्ट पूर्ण पथ सहित सही तरीके से काम करता है।

कारण मुझे पूर्ण पथ की आवश्यकता है (जैसा कि पिछले प्रश्न में बताया गया है) यह है कि पथ के बिना, एक्सेल उत्पन्न होता है जब ऑटोमेशन सर्वर चुना जाता है क्योंकि यह mscoree.dll नहीं ढूंढता है (दिलचस्प रूप से हालांकि मुझे कोई त्रुटि मिलती है पंजीकरण ठीक काम करता है)।

मैं एक सेटअप प्रोजेक्ट के माध्यम से स्थापित कर रहा हूं जो अन्यथा ठीक काम करता है।

मैं एक VISTA * 64 सिस्टम पर स्थापित कर रहा हूं लेकिन अन्य ओएस पर एक ही त्रुटि प्राप्त कर ली है।

क्या कोई जानता है कि मैं क्या गलत कर रहा हूं?

उत्तर

1

मैंने इसे आजमाया नहीं है, लेकिन मुझे लगता है कि जब यह आपकी रजिस्ट्री कुंजी "[SystemFolder] mscoree.dll" में VS.NET डालता है तो इससे संबंधित है। यह मूल पोस्ट में काम कर रहा था। ऐसा इसलिए हो सकता है क्योंकि वीएस.NET पहले "regasm/regfile" चला रहा था और उसके बाद उस कुंजी को "[SystemFolder] mscoree.dll"

आपके मामले में, यह काम नहीं करता है क्योंकि VS.NET आपके रजिस्ट्री कुंजी "[SystemFolder] mscoree.dll" पहले एमएसआई रजिस्ट्री तालिका में और फिर आपका मान "regasm/regfile" से मान आउटपुट द्वारा अधिलेखित हो गया।

वीएस.NET आपके मूल्य को ओवरराइट करने की संभावना को रद्द करने के लिए, मुझे लगता है कि आप अपने DLL vsdrpDoNotRegister को चिह्नित कर सकते हैं। फिर, VS.NET आपकी रजिस्ट्री तालिका पर कोई जादू नहीं करेगा। अब, आप एडिन पंजीकरण सही तरीके से करने के लिए अपने आप हैं। हालांकि, मूल के रूप में, सभी वीएस.NET बस "regasm/regfile" बुला रहा था। आप इसे स्वयं क्यों नहीं करते हैं। एक बार जब आप "regasm/regfile your.dll" से .reg फ़ाइल प्राप्त कर लेते हैं, तो केवल एक चीज जो आपको करने की आवश्यकता है उसे रजिस्ट्री तालिका में आयात करना है। "लक्ष्य मशीन पर रजिस्ट्री" पर राइट क्लिक करें और "आयात करें ..." मेनू पर क्लिक करें। बस। यह इतना मुश्किल नही है। के बाद आप अपने reg फ़ाइल आयात, तो आपको निम्न कुंजी

HKEY_CLASSES_ROOT\CLSID\{my_GUID}\InprocServer32\(default) 

मूल्य अभी भी mscoree.dll सेट किया जाना चाहिए देखना चाहिए। अब, आप इसे [SystemFolder] mscoree.dll में बदल सकते हैं।

संबंधित मुद्दे