Outlook 2007 from C# - COM exception, TYPE_E_LIBNOTREGISTERED

PK. picture PK. · Feb 27, 2010 · Viewed 13k times · Source

I'm trying to make a program that would open new Outlook 2007 message.

I've referenced from COM tab Microsoft Outlook 12.0 ObjectLibrary.

These items showed up in references in VS:

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

Now I try to invoke following code:

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

where OutlookApp==Microsoft.Office.Interop.Outlook namespace.

While invoking second line of listing I keep getting this exception: (InvalidCastException)

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)).

That code worked well for Outlook 2003 on my other station.

I'll be grateful for any ideas how to solve it.

Answer

Daniel Ranft picture Daniel Ranft · Sep 14, 2012

This can also happen, when you have uninstalled an office 2013 installation and you return to office 2010. There might be some registry keys and dlls left, which cause the office application to load the wrong dll(s).

Here is the fix: http://www.fieldstonsoftware.com/support/support_gsyncit_2013.shtml