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

时间:2010-09-20 10:39:45

标签: c# windows-7 outlook 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;
  }
}

该应用程序引发了以下异常:

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

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

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

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

当我尝试通过Activator

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

谢谢!

5 个答案:

答案 0 :(得分:31)

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

答案 1 :(得分:3)

  1. 在开始菜单中选择运行
  2. 键入dcomcnfg并单击“确定”
  3. 打开“组件服务”窗口。
  4. 展开节点组件服务 - > MyComputer - > DCOM配置。
  5. 右键单击应用程序(Outlook邮件附件)并选择属性。
  6. 根据需要点击“身份”标签。
  7. 点击“互动用户”,然后点击确定

答案 2 :(得分:1)

看起来您的Office安装已损坏。

尝试以管理员身份重新运行安装程序来修复安装。

答案 3 :(得分:0)

在我的情况下,Visual Studio以管理员身份运行导致问题。当我以普通用户的身份运行时,我终于摆脱了这个错误。

答案 4 :(得分:0)

如果您正在运行Visual Studio中的独立应用程序或使用Office产品从Visual Studio进行调试,那么您应该对两者(Visual Studio和Office产品)具有相同的访问级别,这也是原因之一为什么会出现这个问题,但我在网上看到,在服务中初始化outlook对象时,有这么多人有这个问题。我希望解决这个问题的方法对我也有帮助。请按照步骤进行操作。

  1. 转到命令提示符,键入以下内容并按Enter键。这将打开组件服务:

    mmc comexp.msc / 32

  2. enter image description here

    enter image description here

    1. 展开节点组件服务 - > MyComputer - > DCOM配置

    2. 现在找到您想要的应用程序(在本例中为Outlook Message Attachment)并右键单击该应用程序(如果您按照这些步骤操作,此问题可以解决所有办公应用程序)并选择属性。

    3. 转到“身份”标签,然后选择“交互式用户”并按“确定”。这应该可以解决您的问题。

    4. enter image description here

      交互式用户只是登录用户。当您尝试通过服务访问办公产品时,访问级别必须相同,这就是您需要指定适当用户的原因。如果要在服务器上运行该服务而不登录它,则需要确保服务器具有用于运行服务的用户帐户以及运行此属性的属性中指定的办公产品(请查看“属性”对话框)。如果您想了解此对话框中提到的不同类型的用户帐户,请参阅以下Microsoft链接。

      http://msdn.microsoft.com/en-us/library/windows/desktop/ms692541%28v=vs.85%29.aspx