【问题标题】:Microsoft.Office.Interop.Outlook --> 800700c1 is not a valid Win32 applicationMicrosoft.Office.Interop.Outlook --> 800700c1 不是有效的 Win32 应用程序
【发布时间】:2021-03-12 20:26:01
【问题描述】:

我“拥有”一个 C# WinForms 桌面应用程序,每天有大约 30-50 个用户使用它(通常在他们轮班期间经常使用)。它所做的其中一件事是调用 Microsoft.Office.Interop.Word 和/或 Microsoft.Office.Interop.Outlook 以打开新的 Word 或 Outlook 文档,然后用信息填充该文档。然后,用户可以在保存 Word 文档或发送电子邮件之前手动覆盖。

对于 ONE 用户,他似乎突然无法再让该应用程序打开新的 Outlook 消息。它抛出了一个异常:

由于以下错误,检索具有 CLSID {0006F03A-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:800700c1 不是有效的 Win32 应用程序。 (来自 HRESULT 的异常:0x800700C1)。

它引用了我们所做的行: Outlook.Application Outlook = new Outlook.Application();

我已经在谷歌上搜索了几个小时,试图弄清楚“为什么只有这个用户?”以及如何解决它。我让他运行 Office 365 的“在线修复”功能。我让他尝试重新注册 Microsoft.Office.Interop.Outlook.dll 文件。没变。我发现一些文章建议如果一个人的项目设置为“任何 CPU”的构建平台目标,这可能会导致问题。所以我为这个用户创建了一个特殊版本,它被设置为“x86”(根据推荐)。没变。 (顺便说一句,该应用程序可以移交给 Word 没有问题!)

我不知道接下来要做什么来尝试解决这个问题。

有什么想法吗?

【问题讨论】:

  • 您确定用户使用的是您引用的版本吗?还要检查他是否安装了 Outlook。然后检查他是否可以在打开 Outlook 时不弹出任何消息。
  • 您可能最终会在两台机器上完成所有 Word 的 COM 注册,一台正常工作,另一台失败。我真的一点都不想念COM
  • 您确定用户安装了 32 位 Outlook 吗?根据以下帖子:chentiangemalc.wordpress.com/2015/06/18/… 错误 800700C1 可能是“位”问题。根据:support.microsoft.com/en-us/office/…,“除非您在开始安装过程之前明确选择 32 位版本,否则会自动安装 64 位版本的 Office”
  • 是的,Outlook 已安装。他整天都在用它。我们处于企业环境中,企业管理这些笔记本电脑的安装和自动更新。我想我们都会使用 64 位版本。在程序中,我们实际上并不显示 Word 或 Outlook。只是“适用于企业的 Microsoft 应用程序 -en-us”。但是,在我自己的笔记本电脑上,如果我跟踪 Word 和 Outlook 的快捷方式,它们位于 C:\Program_Files(x86) 中。但对他来说,它们在 C:\Program Files\ 路径中,否则匹配 (Microsoft Office\root\Office16)。
  • 当我在最后一条评论中说“在程序中”时,我指的是“控制面板”->“程序”

标签: c# .net outlook office-interop


【解决方案1】:

因此,我的用户决定去确保他已更新到最新版本的 Windows 10。(尽管公司多年来一直在管理每台设备的 Windows 更新。)

但是这样做解决了这个问题。确实是操作系统安装问题。

【讨论】:

    猜你喜欢
    • 2013-12-07
    • 2013-11-03
    • 2017-04-16
    • 2012-07-03
    • 2019-03-02
    • 2016-12-07
    • 2021-10-15
    • 2011-06-23
    相关资源
    最近更新 更多