在Windows 7中获取/创建Outlook应用程序

And*_*rei 16 c# outlook windows-7 outlook-2010

我正在尝试获取当前运行的Outlook版本或启动Outlook以防它未运行,但我在Windows 7中获取或创建Outlook应用程序对象时遇到一些问题.我认为它与在Vista和7中限制性的用户权限.我正在使用Outlook 2010.

编辑:仅当我已启动Outlook 2010实例时才会显示这些错误.如果Outlook未启动,则应用程序可以顺利运行(它可以自行启动Outlook实例).

如果有人可以告诉我如何正确获取Outlook应用程序版本,那将非常有用.

我正在运行的代码是一个长的try-catch块,它继续触发异常:


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;
  }
}
Run Code Online (Sandbox Code Playgroud)

该应用程序抛出以下异常:

当我尝试创建一个新的Outlook应用程序实例时:

由于以下错误,检索具有CLSID {0006F03A-0000-0000-C000-000000000046}的组件的COM类工厂失败:80080005.

当我尝试获取Outlook应用程序实例时:

操作不可用(HRESULT异常:0x800401E3(MK_E_UNAVAILABLE))

当我尝试通过Activator创建实例时

由于以下错误,检索具有CLSID {0006F03A-0000-0000-C000-000000000046}的组件的COM类工厂失败:80080005.

谢谢!

And*_*rei 31

显然这些错误是由于我在不同的用户权限级别上运行Outlook和应用程序而触发的(其中一个作为管理员,另一个作为普通用户).

  • 安德烈我也有同样的问题.你是怎么解决的?在我的情况下,即使未手动打开Outlook,它也会出现此错误"由于以下错误,检索具有CLSID {0006F03A-0000-0000-C000-000000000046}的组件的COM类工厂失败:80080005." (3认同)
  • ANP,从我记忆中,这个错误被触发,因为我运行的是Outlook和正在以不同用户权限访问Outlook的应用程序.对我来说,这是因为我正在运行具有管理员权限的Visual Studio并且正在尝试检索Outlook,该Outlook以正常权限(而不是管理员)启动.无论是那个还是有一个我无法访问的Outlook进程,因为它是由应用程序的另一个实例启动的. (3认同)
  • 我有同样的问题.VS设置为以管理员身份运行.直接从VS运行或调试应用程序时,它会继承管理员权限.如果Outlook以正常权限打开,则会获得MK_E_UNVAILABLE异常.在以下情况下,我已成功运行类似的代码:1.Outlook以管理员权限运行2. Outlook已关闭,应用程序将创建一个新的应用程序.此外,您可能需要查看用于获取现有Outlook应用程序的MSDN代码.它类似于上面的代码,但检查现有的FIRST而不是捕获异常:http://bit.ly/18YZarC (2认同)