- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
几周以来,我们一直在解决一个问题,即由于不确定的原因,在少数客户中,我们的Outlook加载项被卸载和禁用。 “禁用”是指Outlook将以下注册表值从3更改为2,这实际上意味着该加载项将在下次启动时不会加载:HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Outlook\Addins\[OurAddin.sProgID]\LoadBehavior
没有错误消息,并且我们的插件自身产生的日志文件中也不会显示任何异常。
我已经找到以下页面专门处理LoadBehavior更改问题:http://blogs.msdn.com/vsod/archive/2008/04/22/Troubleshooting-com-add-in-load-failures.aspx
但是,那里提出的所有可能原因似乎都不适用:
插件不仅在“禁用项目”列表中列出。IDTExtensibility2
方法和代码中的任何其他地方都没有未处理的异常。所有代码都包装在try / catch等效项中,并且所有异常输出仅通过OutputDebugString
发出或进入日志文件。
该错误似乎与防病毒软件无关,即在禁用该错误后也会发生。
禁用所有其他插件也不会对该错误产生影响。
因此,还有什么可以导致Outlook禁用加载项?
一些更多的细节/观察:
到目前为止,我们还无法在测试环境中重现该问题,因此在出现问题时我们还无法附加调试器。
当我们尝试通过远程支持(TeamViewer)观察发生的情况时,永远不会发生此问题。我怀疑这是因为TeamViewer使用了一个钩子DLL,它将自身注入所有正在运行的进程(包括Outlook),从而影响了内存布局,时序,线程顺序等。
每当我们编译外接程序的新版本以尝试新功能时,外接程序通常可以正常工作几个小时甚至几天,直到最终再次被禁用。一旦发生这种情况,所有随后的尝试将外接程序加载到该计算机上(通过手动改回LoadBehavior值)都将失败(即LoadBehaviour将简单地改回2),直到我们编译并部署另一个构建(或尝试使用TeamViewer-参见上文)。
通常,加载项会在Outlook启动时立即卸载,尽管偶尔在Outlook已经运行一段时间后也会发生。在这种情况下,日志文件看起来完全没有问题-插件仅执行常规的关闭步骤,就像正常关闭Outlook一样。
据我从日志文件中看到的信息,以及通过SysInternals ProcessMonitor观察到的问题,当Outlook启动时(而不是在会话期间)禁用加载项时,甚至在实例化COM对象(即加载项)之前就已卸载了DLL。 (构造函数中的日志消息永远不会显示)。
我们在OutputDebugString
部分(这是一个Delphi DLL)中放入了initialization
消息。当加载项加载失败时,它们都不会显示。
我们的客户中只有很小一部分受到此问题的影响。我们有数以万计的安装程序,但尚未收到有关此安装程序的任何报告。
更新:似乎经常(但并非总是)在卸载加载项之前记录的最后一件事是文本为“ OLE错误800A01A8”的异常。该异常被我正在使用的框架(Add-in-Express)中内置的全局异常处理程序捕获,并且似乎不是源于我自己的代码的任何地方,而该代码的每个方法现在都完全包裹在try..catch
中。这通常是在我从检查员的Activate事件处理程序设置CommandBarButtons的可见性后立即发生的。
所有受影响机器的共同属性:
Windows XP Professional,最新补丁程序级别
Outlook 2003 Professional,最新补丁程序级别
多种版本的McAfee Virus Scan(尽管将其禁用无效-参见上文)
用户是本地管理员组的成员
需要注意的另一件事也很重要(尽管可能不如我最初想象的那么重要):
我们正在使用第三方供应商的许可/复制保护模块,该模块将已编译的DLL封装在“外壳”中,并且只能即时对其进行解压缩。自从我发现甚至在执行我们自己的任何代码之前就卸载了该插件之后,这一直是我的主要怀疑。但是,尽管供应商确认其代码中可能存在未处理的异常,但是由保护壳的特殊调试版本生成的日志文件显示,解压缩过程已成功完成,并且在Outlook卸载加载项之前,控制权已经交还给受保护的DLL。 。因此,看起来导致Outlook卸载加载项的原因发生在保护外壳初始化完成和我们自己的代码之间。
还有其他想法吗?
最佳答案
多年来,我的公司一直在忍受着听起来像您遇到的同样问题。我们拥有的插件是用于Outlook 2003的VB6 COM插件,已部署在数百台计算机上,每天要循环数百次(如果不是数千次)。我们经历了很多加载和卸载循环。
在加载了插件但未连接插件的情况下,我们会得到相当多的常规错误,并通过代码进行处理。 (显然不是生产质量)
Dim outlook As outlook.Application
Set outlook = CreateObject("Outlook.Application")
outlook.COMAddIns("MyFancyDancyPlugin").Connect = True
关于exception - 除了未处理的异常之外,是什么导致Outlook将COM加载项的LoadBehavior更改为2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/546051/
以下 Outlook 的命令适用于 Outlook 2010: outlook.exe /c ipm.note /m "&subject=abc" /a "c:\attach.txt" 但它不适用于
我有 2 个电子邮件帐户,一个是 Gmail,另一个是 Outlook。我想在邮件到达时自动将进入 Outlook 的邮件接收到 Gmail。我该怎么做?Outlook 是否存在任何可能阻碍此操作的安
Outlook 加载项如何在邮件上设置 MAPI 属性(例如正文内容),但仅将其保存在本地缓存中(而不发送回 Exchange 服务器)?我见过使用一些加密插件来完成此操作。 我愿意使用几乎任何可以实
有什么方法可以在 Outlook 的模板主题或正文中插入今天的日期吗?这样,每当我打开保存的模板时,今天的日期就会自动显示在主题和正文中。 有什么内置功能吗?像 Date() 这样的东西? 最佳答案
我有一个时事通讯系统,可以跟踪阅读它的人。尽管此功能仅在允许下载图像的情况下才有效。但这不是我现在的问题。 我的问题是,当我在 Outlook (2010) 中打开新闻稿并授予下载图像的权限时,我的系
我需要从 Outlook msg 文件中读取内容。目前我正在使用来自 CodeProject.com 的类(class)项目来实现这一点,因为在服务器上部署 VSTO 和 Outlook 不是一种选择
我正在开发可与共享邮箱一起使用的 Outlook 加载项。目前,office 插件在委托(delegate)场景中不可用,但 MS 已经发布了支持这些场景的预览版本。https://learn.mic
我正在开发可与共享邮箱一起使用的 Outlook 加载项。目前,office 插件在委托(delegate)场景中不可用,但 MS 已经发布了支持这些场景的预览版本。https://learn.mic
我开发了一个运行良好的 Outlook Web 插件。它是一个任务 Pane ,可在约会的组合模式下使用,它收集事件数据、添加一些数据并将其发送到某个地方的 API。 我现在想做的是将经过身份验证的用
在 Outlook for Mac 中,office.js Outlook 加载项在我假设是 Safari Web 控件的任务 Pane 中运行。我无法确定您如何从任务 Pane 中运行的加载项中清除
Marshal.GetActiveObject("Outlook.Application") 在 Outlook 启动并继续运行时抛出 操作不可用(HRESULT 异常:0x800401E3 (MK_
我有一个 VSTO Outlook 2007 加载项。我必须检查 Outlook 是否与交换服务器脱机/联机。我正在使用如下代码: NameSpace ns = Application.GetNam
我正在尝试在图像上方添加文本,如下所示。它适用于除 Outlook 2010、Outlook 2007、Outlook 2013 之外的所有电子邮件客户端。所有这三个客户端都忽略了填充。我到处都试过了
有没有办法处理 Outlook 邮件项中收件人的悬停事件?我想在悬停时显示一个弹出窗口,其中包含有关收件人的一些信息,并想知道是否可以通过 Outlook 加载项实现。 最佳答案 因为 Inspect
我正在尝试在 Outlook 2007 中创建、更新和删除事件(但最好它适用于所有版本)。创建和删除事件工作正常。我关注了 several threads但由于某种原因更新操作失败。 当我双击 ICS
我在 ms Outlook 中有 2 个帐户('user1@test.com' - 默认配置文件,'user2@test.com'),我正在尝试使用非默认帐户通过 python 发送消息。这是我的代码
我有一个我最近继承的Outlook 2007加载项,目前在生产中存在一个问题,有些用户正在周期性地,似乎是随机地禁用其加载项。外接程序中没有日志,并且在外接程序代码中的每个方法/事件调用周围都存在tr
是否可以为 创建 HTML 电子邮件签名? 2003年展望或以上不引用外部图像? 也就是说,使用那些特殊的“cid”引用,但将图像本身嵌入到签名中,而不是嵌入到文件系统或网络中。 这适用于根据用户的各
似乎没有太多信息或任何好的代码示例用于以编程方式设置 Outlook 2007 MailItem 的类别。 MSDN has a limited page ,并提到使用 VB 的 拆分 功能,或多或少
Outlook 2007 在 Outlook 中撰写新邮件时,可以创建指向其他邮件的链接吗? Whww 我正在撰写一封新邮件,我想创建一个指向已发送项目的链接,单击此链接应该会打开邮件。 这能做到吗?
我是一名优秀的程序员,十分优秀!