I'm trying to get the current running version of Outlook or start up Outlook in case it is not running, but I am having some issues in getting or creating the Outlook Application object in Windows 7. I think it has something to do with the user priviliges that are restrictive in Vista and 7. I am working with Outlook 2010.
edit: These errors only appear if I already have an Outlook 2010 instance started. If Outlook is not started, the application can run smoothly (it can start an Outlook instance by itself).
If anybody can tell me how to correctly get the Outlook Application version, that would be really helpful.
The code I'm running is a long try-catch block that keeps on triggering exceptions:
try
{
// create an application instance of Outlook
oApp = new Microsoft.Office.Interop.Outlook.Application();
}
catch(System.Exception ex)
{
try
{
// get Outlook in another way
oApp = Marshal.GetActiveObject("Outlook.Application") as Microsoft.Office.Interop.Outlook.Application;
}
catch (System.Exception ex2)
{
// try some other way to get the object
oApp = Activator.CreateInstance(Type.GetTypeFromProgID("Outlook.Application")) as Microsoft.Office.Interop.Outlook.Application;
}
}
The application throws me the following exceptions:
When I try to create a new Outlook application instance:
Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005.
When I try to get the Outlook app instance:
Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))
When I try to Create an instance through the Activator
Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005.
Thank you!
Apparently these errors were triggered because I was running Outlook and the application on different user permission levels (one of them as administrator and the other one as regular user).
It is true that if you are running a standalone application from Visual Studio or debugging from Visual Studio which use office products, you should be having same access level for both (Visual Studio and Office Products) and that is one of the reasons why this issue occurs but I am seeing online that so many people have this issue while initializing outlook object in a service. I hope what resolved the issue for me would help others too. Please follow along the steps.
Go to command prompt, type the following and press enter. This opens Component Services:
mmc comexp.msc /32
Expand the nodes Component Services -> MyComputer -> DCOM Config
Now find out your desired application (In this case, Outlook Message Attachment) and right click on the application (If you follow these steps, this issue related all office applications can be resolved) and select properties.
Go to Identity tab and select The interactive user and press OK. This should resolve your issue.
The interactive user is nothing but the logged on user. When you are trying to access office products through service, the access level has to be same and that is the reason you need to specify proper user. If you want to run the service on a server without logging onto it, you need to make sure that the server has a user account which will be used for running the service as well as running office products as specified in Properties as This user (Please look at the Properties dialog box). If you want to learn about the different types of user accounts mentioned in this dialog box, please refer to the following Microsoft link.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms692541%28v=vs.85%29.aspx
It looks as if your Office installation has become corrupted.
Try to repair the installation by rerunning setup as Administrator.
In my case it was Visual Studio ran as Administrator causing the issue. When I ran it as normal user I got rid of this error finally.
User contributions licensed under CC BY-SA 3.0