Unable to Instantiate Outlook Object from Visual Studio 2008 on Vista with UAC ON?


Having problems in instantiating a new Outlook object from VS 2008(Windows Form Application) when running on Vista with UAC ON? Getting weird errors similar to the ones below?

System.Runtime.InteropServices.COMException was unhandled
  Message="Creating an instance of the COM component with CLSID {0006F03A-0000-0000-C000-000000000046} from the IClassFactory failed due to the following error: 80010001."
  Source="MyApp"
  ErrorCode=-2147418111

This error was when Outlook was NOT running and I tried to debug my application from Visual studio 2008.

System.Runtime.InteropServices.COMException was unhandled
  Message="Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005."
  Source="MyApp"
  ErrorCode=-2146959355

This error was when Outlook was already running and I tried to debug my application from Visual studio 2008. In both cases I got the error when I tried to instantiate a new object of the Outlook.Application.

oApp = new Outlook.Application

Using the Err.exe to get more details on the 80010001 and the 80080005 we get the following details:

# for hex 0x80010001 / decimal -2147418111 :
  DBG_EXCEPTION_NOT_HANDLED                                     ntstatus.h    
# Debugger did not handle the exception.
  RPC_E_CALL_REJECTED                                           winerror.h    
# Call was rejected by callee.
# 2 matches found for "80010001"

# for hex 0x80080005 / decimal -2146959355 :
  CO_E_SERVER_EXEC_FAILURE                                      winerror.h    
# Server execution failed
# 1 matches found for "80080005"

Why would we be getting a RPC_E_CALL_REJECTED or CO_E_SERVER_EXEC_FAILURE? In my case this was happening because of the difference in Integrity Level of the two processes(Outlook.exe and devenv.exe)

The Visual Studio 2008 was being "Run as administrator" which makes it run in High IL and Outlook was by default running in Medium IL and this was causing the errors. The solution is run both the processes in the same IL.

How can you check the Integrity Level of a process? Use Process Explorer(Click on the View menu -> Select Columns->Process Image Tab and check Integrity Level)

Hope this helps!

Comments (4)

  1. Ken Slovak says:

    Hi Akash,

    I’m running into the same situation here, and when using code from a KB article to start Outlook:

    Outlook.ApplicationClass _app = new Outlook.ApplicationClass();

    Outlook.Application outlookApp = (Outlook.Application)_app;

    The problem is I’m seeing the error on Windows XP, where UAC is not in the picture.

    Any ideas on why that exception is popping up (running in debug mode from VS2008) in this case?

    Thanks,

    Ken Slovak

  2. Akashb says:

    Is this only happening in the debug mode?

    What is the version of Outlook?

  3. Kevin says:

    Thank you, thank you, thank you, thank you, thank you!!!!

  4. Ashish J says:

    Hey Akash,

    i am having the same issue, below is my code, my outlook.exe and devenev.exe processes integrity level is high, i am trying to connect to outlook 2013 through my asp.net application.

     Dim oApp As Outlook.Application = New Outlook.Application()

    ' Get the namespace and the logon.

     Dim oNS As Outlook.NameSpace = oApp.GetNamespace("MAPI")

    i also tried adding iis user and network service permissions in dcom config, any suggestions you can provide to me will be of great help.

    Thanks,

    Ashish

Skip to main content