2009-04-02 12 views
6

क्या यह निर्धारित करने के लिए सी # में कोई प्रोग्रामेटिक तरीका है कि कोई विशेष COM DLL स्थापित किया गया है या नहीं? या यह कक्षा आईडी के लिए रजिस्ट्री स्कैनिंग का मामला है?प्रोग्रामेटिक रूप से निर्धारित करता है कि एक COM लाइब्रेरी (डीएलएल) स्थापित है

उत्तर

4

जो मैंने आमतौर पर किया था (और यदि मैं इसे फिर से जरूरी करता हूं) क्लास लाइब्रेरी में एक क्लास का ऑब्जेक्ट इंस्टेंस बनाने का प्रयास करता है - या तो प्रोगिड या GUID द्वारा - और विफलता की जांच।

+0

रजिस्ट्री स्कैनिंग से अधिक मजबूत होना चाहिए, साथ ही खराब स्थापना का पता लगाना चाहिए। इस पर निर्भर करता है कि डीएलएल लोड करना या ऑब्जेक्ट बनाना महंगा है, हालांकि। –

+0

दाएं। पुस्तकालय से "उपयुक्त" वर्ग का प्रयास करने और उपयोग करने के लिए शायद सबसे अच्छा है। और मुझे लगता है कि यदि आप लाइब्रेरी के साथ कम से कम कुछ करने की योजना नहीं बना रहे हैं, तो जांचने की कोई आवश्यकता नहीं होगी, इसलिए इंस्टॉल करने के लिए इसे लोड करने के लिए इसे लोड करना आमतौर पर कोई समस्या नहीं है ... – peSHIr

0

कोशिश करें और इसे बनाएं, और यदि नहीं, तो त्रुटि को संभाल लें।

Win32 CoCreateInstance के तहत REGDB_E_CLASSNOTREG लौटाएगा यदि स्थापित नहीं है (आईआईआरसी, यदि पंजीकृत है, लेकिन इसे लागू करने के बाद डीएल/एक्सई हटा दिया जाता है)।

.NET के तहत उत्पन्न COM इंटरऑप असेंबली कुछ त्रुटि फेंक देगा (इसे जांचने की आवश्यकता है, किस अपवाद प्रकार के परीक्षण के लिए सुविधाजनक कोड नहीं है)। ध्यान दें। यदि इंटरऑप असेंबली गुम हो जाती है तो उसे अनुपलब्ध असेंबली के रूप में माना जाएगा जिससे संभवतः एक एप्लिकेशन लोड त्रुटि हो सकती है।

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

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