2010-01-15 6 views
14

हाथ इंटरऑप के लिए एक प्रबंधित कक्षा पंजीकृत करते समय, कुछ रजिस्ट्री कुंजियों की आवश्यकता होती है। उदाहरणक्या प्रबंधित COM घटक पंजीकृत करते समय 'कार्यान्वित श्रेणियां' कुंजी आवश्यक है?

HKEY_CLASSES_ROOT 
    CLSID\[My Cls Id] 
    InprocServer32 
    (Default) = "mscoree.dll" 
    Assembly = [My assembly name] 
    etc. 

के लिए मैंने देखा है कि जब वी.एस. COM Interop के लिए एक पुस्तकालय पंजीकृत करता है, यह भी कहते हैं की है एक प्रमुख

HKEY_CLASSES_ROOT 
    CLSID\[My Cls Id] 
    Implemented Categories 
     {62C8FE65-4EBB-45e7-B440-6E39B2CDBF29} 

क्या के लिए यह महत्वपूर्ण है, और यह बिल्कुल जरूरी है? जहां तक ​​मैं कह सकता हूं, जीवन इसके बिना ठीक ठीक हो जाता है, लेकिन शायद मुझे उन परिस्थितियों का सामना नहीं करना पड़ रहा है जहां इसकी आवश्यकता है।

उत्तर

23

यह एक कैटिड, एक घटक श्रेणी है। एक कंट्रोल होस्ट इसका उपयोग टूलबॉक्स में दिखाई देने वाली वस्तुओं को फ़िल्टर करने के लिए कर सकता है, केवल उन लोगों को पेश करता है जो इंटरफेस के अपेक्षित सेट को लागू करते हैं।

आप HKCR\Component Categories रजिस्ट्री कुंजी में ज्ञात घटक श्रेणियों की एक सूची देख सकते हैं। Regasm.exe का उपयोग करने का अर्थ है "यह COM सर्वर .NET में लागू किया गया है"। जो कि जानना उपयोगी है क्योंकि .NET प्रोग्राम को किसी प्रबंधित भाषा में लागू COM सर्वर का उपयोग नहीं करना चाहिए, इसे सीधे असेंबली में मेटाडेटा का उपयोग करना चाहिए।

सीएटीआईडी ​​अच्छी तरह से प्रलेखित नहीं हैं। जो उन्हें काफी बेकार बनाता है, यदि आप उन्हें छोड़ देते हैं तो आपको शायद ही कभी परेशानी होगी। यदि कुछ नियंत्रण होस्ट विक्रेता के लिए आपको अपने COM सर्वर को अपने होस्ट में प्रयोग करने योग्य बनाने के लिए एक CATID का उपयोग करने की आवश्यकता होती है, तो वे आपको स्पष्ट रूप से इसके बारे में बताएंगे।

+0

हंस - सहायक उत्तर धन्यवाद। क्या आपका मतलब है "एक .NET प्रोग्राम" प्रबंधित भाषा "की बजाय एक * un * प्रबंधित भाषा में लागू COM सर्वर का उपयोग नहीं कर सकता है? Http://msdn.microsoft.com/en-us/magazine/cc301432.aspx –

+0

@ सिमॉन पर सीएटीआईडी ​​पर अधिक: नहीं, COM सर्वर सामान्य रूप से एक अप्रबंधित भाषा में लागू होते हैं। –

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