2010-03-04 8 views
18

पंजीकृत करें प्रश्न: मेरे पास एक .NET dll है जिसे मैं एक C++ प्रोग्राम से उपयोग करता हूं। अब मुझे एक तैनाती कंप्यूटर पर प्रोग्रामेटिक रूप से डीएलएल पंजीकृत करना है।एक सी #/वीबी.नेट कॉम डीएल प्रोग्रामेटिक रूप से

मैं यह कैसे कर सकता हूं (प्रोग्रामेटिक रूप से! Regasm का उपयोग नहीं कर रहा है)? मुझे याद है, जब मैंने एक बार C++ dll से VB6 डीएल कहा था, तो मुझे DllRegisterServer और DllUnregisterServer का उपयोग करना पड़ा।

क्या यह अभी भी एक .NET डीएल के साथ है?
ऐसा लगता है कि मुझे किसी भी तरह से dllregisterserver फ़ंक्शन को .NET dll में जोड़ना है।

उत्तर

28

YUK, .NET DLLs यह कहीं क्रियान्वित ताकि आप एक .NET संस्थापक लिखने की DllRegisterServer नहीं है,,:

Assembly asm = Assembly.LoadFile (@"c:\temp\ImageConverter.dll"); 
RegistrationServices regAsm = new RegistrationServices(); 
bool bResult = regAsm.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase); 
+0

AFAIK को इसे व्यवस्थापकीय अधिकारों की आवश्यकता है। 'Regasm' को सीधे कॉल करने के साथ कोई बड़ा अंतर नहीं है। लेकिन यह काम करता है। +1 –

+2

@ अर्नुद बुचेज़: एक बड़ा अंतर: आप इसके चारों ओर एक कोशिश कर सकते हैं, और त्रुटियों को संभाल सकते हैं। एक नई प्रक्रिया के साथ-साथ यह भी संभव है, लेकिन बहुत अधिक काम है। –

1

क्या आप process monitor का उपयोग कर सकते हैं यह देखने के लिए कि क्या सिस्टम बदलता है (मूल रूप से रजिस्ट्री परिवर्तन मुझे लगता है) जब आप regasm.exe का उपयोग अपने डीएलएल को पंजीकृत करने के लिए करते हैं, और उसके बाद उन परिवर्तनों को प्रोग्रामिक रूप से बनाते हैं?

+0

हाँ, कि शुद्ध C/C++ के साथ जाने का रास्ता नहीं है। अच्छा है, लेकिन मुझे लगता है कि डेटा को लिखने के तरीके को समझने में समय लग सकता है ... –

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