2010-02-27 24 views
8

मैं एक ऐसा प्रोग्राम बनाने की कोशिश कर रहा हूं जो नया Outlook 2007 संदेश खोल देगा।सी # से आउटलुक 2007 - COM अपवाद, TYPE_E_LIBNOTREGISTERED

मैंने COM टैब माइक्रोसॉफ्ट आउटलुक 12.0 ऑब्जेक्ट लाइब्रेरी से संदर्भित किया है।

इन मदों वी.एस. में संदर्भ में दिखाया:

Microsoft.Office.Core 
Microsoft.Office.Inerop.Outlook 

अब मैं कोड निम्नलिखित आह्वान करने के लिए प्रयास करें:

var _outlookInstance = new Microsoft.Office.Interop.Outlook.Application(); 
var _message = (OutlookApp.MailItem)_outlookInstance.CreateItem(OutlookApp.OlItemType.olMailItem); 

जहां OutlookApp == Microsoft.Office.Interop.Outlook नाम स्थान।

Unable to cast COM object of type 'Microsoft.Office.Interop.Outlook.ApplicationClass' to interface type 'Microsoft.Office.Interop.Outlook._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063001-0000-0000-C000-000000000046}' failed due to the following error: Library unregistered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)).

कि कोड मेरे दूसरे स्टेशन पर Outlook 2003 के लिए अच्छी तरह से काम (InvalidCastException):

जबकि सूची मैं इस अपवाद बार आ रही है की दूसरी पंक्ति लागू।

मैं किसी भी विचार के लिए इसे हल करने के लिए आभारी रहूंगा।

उत्तर

10

यह तब भी हो सकता है जब आपने Office 2013 स्थापना को अनइंस्टॉल कर दिया हो और आप Office 2010 पर वापस आएं। कुछ रजिस्ट्री कुंजियां और डीएलएस छोड़े जा सकते हैं, जिससे Office अनुप्रयोग गलत dll को लोड करता है। http://www.fieldstonsoftware.com/support/support_gsyncit_2013.shtml

+3

बहुत बढ़िया खोज - 'HKEY_CLASSES_ROOT \ TypeLib \ {00062FFF-0000-0000-C000-000000000046} \ 9.5' की चाल चल रही है! यह ** Office 2013 अनइंस्टॉलर ** के साथ एक त्रुटि है। – SliverNinja

+1

अच्छी खोज, जो मेरी समस्या को ठीक करती है +1 – Gabe

+0

यह मेरे लिए काम नहीं करता था, क्योंकि अत्यधिक 9.5 फ़ील्ड नहीं था। मेरे मामले में, समस्या यह थी कि जब मैंने Outlook 2010 में डाउनग्रेड किया तो मैंने स्थापना स्थान को संशोधित किया है (यानी डिफ़ॉल्ट प्रोग्रामफ़ाइल फ़ोल्डर में नहीं)। हालांकि, विंडोज़ 'HKEY_CLASSES_ROOT \ TypeLib \ {00062FFF-0000-0000-C000-000000000046} \ 9.4 \ 0 \ win64' में मूल्य को मैन्युअल रूप से अपडेट करने और सही स्थान पर इंगित करने के बाद, अपडेट नहीं किया गया था, समस्या हल हो गई थी। – Doigen

5

कार्यालय उस मशीन पर ठीक तरह से स्थापित नहीं है। आप Regedit.exe के साथ सत्यापित कर सकते हैं, टाइप लाइब्रेरी GUID ({00062FFF-0000-0000-C000-000000000046} होना चाहिए) को सत्यापित करने के लिए HKEY_CLASSES_ROOT\Interface\{00063001-0000-0000-C000-000000000046}\TypeLib पर नेविगेट करें, फिर HKEY_CLASSES_ROOT\TypeLib\{00062FFF-0000-0000-C000-000000000046} पर यह सत्यापित करने के लिए कि टाइप लाइब्रेरी वास्तव में ठीक से पंजीकृत है, का उपयोग करके सही प्रकार पुस्तकालय संस्करण संख्या। उत्तरार्द्ध हिस्सा समस्या होना चाहिए।

यदि लक्ष्य मशीन विंडोज के 64-बिट संस्करण चलाती है, तो परियोजना + गुण, बिल्ड, प्लेटफ़ॉर्म लक्ष्य को x86 पर सेट करने का प्रयास करें।

+0

विंडोज 64 पर, WOW64 रजिस्ट्री के बारे में जानने (http://support.microsoft.com/kb/896459) –

+0

@nobugz: कि दूसरे चरण के बारे में: जब मैं उस स्थान मूल्य पर नेविगेट संग्रहीत वहां "मान सेट नहीं है" कहता है। क्या यही समस्या है? क्या इसे एक specyfic मूल्य पर सेट किया जाना चाहिए? यदि हां, तो मूल्य क्या है। HKEY_CLASSES_ROOT \ TypeLib \ {00062FFF-0000-0000-C000-000000000046} के बच्चे नोड्स में कुछ एम्टी मान भी हैं। क्या वे सेट हो गए हैं? –

+0

अच्छा, यह बताता है कि यह क्यों काम नहीं करता है। कोई विचार नहीं हुआ कि क्या हुआ, "ठीक से स्थापित नहीं" कोण का पीछा करें। शायद आपकी रजिस्ट्री टोस्ट है, इसे किसी अन्य मशीन पर आज़माएं। –

0

निम्नलिखित कोड के साथ एक ही समस्या थी::

Dim OutlookMessage As Outlook.MailItem 
Dim AppOutlook As New Outlook.Application 
OutlookMessage = AppOutlook.CreateItem(Outlook.OlItemType.olMailItem) 

मेरे लिए इसे हल निम्नलिखित के साथ पहली पंक्ति की जगह

यहाँ ठीक है।

Dim OutlookMessage As Object 

(VB में नमूना, लेकिन एक ही सी # करने के लिए आवेदन करना चाहिए)

0

आप दृश्य स्टूडियो से आउटलुक का उपयोग और त्रुटि प्राप्त करने के लिए प्रयास करते हैं:

TF400424: माइक्रोसॉफ्ट आउटलुक के लिए भेजने में विफल: 'Microsoft.Office.Interop.Outlook._Aplication' टाइप करने के लिए इंटरफ़ेस के लिए 'Microsoft.Office.Interop.Outlook.AplicationClass' प्रकार के COM ऑब्जेक्ट को कास्ट करने में असमर्थ। यह ऑपरेशन विफल रहा क्योंकि आईआईडी '{00063001-0000-0000-C000-000000000046}' के साथ इंटरफ़ेस के लिए COM घटक पर क्वेरी इंटरफ़ेस कॉल निम्न त्रुटि के कारण विफल रहा: लाइब्रेरी पंजीकृत नहीं है। (HRESULT से अपवाद: 0x8002801D (TYPE_E_LIBNOTREGISTERED))।

निम्न कार्य करें:

  1. रजिस्ट्री का उपयोग करना, नेविगेट करने के लिए: HKEY_CLASSES_ROOT \ TypeLib {00062FFF-0000-0000-C000-000000000046}
  2. संस्करण कुंजी हटाएँ (जैसे 9.5) Outlook के किसी भी संस्करण के लिए जो नीचे प्रदान की गई संस्करण तालिका के आधार पर आपके सिस्टम पर स्थापित नहीं है। उदाहरण के लिए, यदि आप Outlook 2013 का उपयोग नहीं कर रहे हैं तो "9.5" प्रविष्टि को हटा दें। यदि आप Outlook 2010 का उपयोग नहीं कर रहे हैं तो "9.4" प्रविष्टि को हटा दें। न हटाएँ संस्करण के लिए प्रविष्टि में चरण # 1

आउटलुक 2007 ==> 9.3

आउटलुक 2010 ==> 9.4

Outlook 2013 == कॉन्फ़िगर किया गया था> 9,5

enter image description here


संदर्भ: https://support.netdocuments.com/hc/en-us/articles/205219170--Library-Not-Registered-error-when-using-EMS-in-Outlook

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