出错后重新启用 Microsoft Word 加载项
Posted
技术标签:
【中文标题】出错后重新启用 Microsoft Word 加载项【英文标题】:Re-enabling Microsoft Word Add-In after Error 【发布时间】:2018-04-26 04:32:22 【问题描述】:我们正在为 Microsoft Word 开发 COM 插件(仅限本地,不用于云)。我们的一位客户遇到的问题是,每次启动 Word 时,他都必须手动激活加载项(Word 选项 > 加载项 > 转到... > 勾选相应加载项的复选框)。我可以通过在导致 Word 崩溃的加载项编码中强制出错来重现此行为。下次启动 Word 时,我收到以下消息:
当然,我之前曾多次看到此消息。但是:当时单击“是”的结果是加载项被禁用。在这种情况下,重新启用一次就足够了(如上所述)。下次启动加载项时,您无需再启用它。
但是现在,除了禁用加载项之外,还创建了一个注册表项。该密钥具有加载项的名称,位于以下路径:HKEY_CURRENT_USER/SOFTWARE/Microsoft/Office/15.0/Word/AddInLoadTimes。
而且似乎这个键导致了开头描述的行为。因为如果我删除键,启动Word,启用加载项,关闭word,将注册表中的“LoadBehavior”键设置为“3”,然后重新启动word,一切都很好。
现在我的问题是:是否有用户友好的替代方法来启用加载项?由于我们最少的用户拥有管理权限,因此我们不能要求他们更改某些注册表项来解决问题。
我希望有人可以帮助我。
最好的问候
提莫
【问题讨论】:
你是怎么解决这个问题的? 恐怕我不记得解决方案了。对不起。 【参考方案1】:我们为避免此问题采取的方法是检查代码中的任何静态初始化方法/属性(当 word 尝试激活插件时调用),这可能可能抛出异常(IO 工作,REST api 请求...等)并向其中添加带有一些通知的 try / catch 博客向用户表明插件激活失败 + 异常记录。
旁注:当时我们遇到了同样的问题,除了您提到的用于解决此问题的注册表项外,我们找不到任何东西,但我们面临相同的安全限制,所以这不是一个选择。
【讨论】:
是的,这当然可以解决问题。但是我们的加载项非常复杂,我们目前没有人力来进行这些更改。从长远来看,这肯定是要走的路。但就目前而言,我们正在寻找一种让用户的生活尽可能轻松的方法。【参考方案2】:不太了解你的插件,我能想到两种可能性:
由于注册表项在 HKCU 中(通常相当容易访问),为什么不创建第二个“帮助程序加载项”来检查此项是否存在问题并在需要时将其重置?
否则您可以使用 Inno Setup 创建一个虚拟安装程序来为您执行此操作?
我认为这是可能的,因为您的目标位置是HKEY_CURRENT_USER/SOFTWARE/Microsoft/Office/15.0/Word/AddInLoadTimes
(即HKCU
) 通常可以在没有管理员权限的情况下进行修改:Changing registry without admin rights
【讨论】:
我也已经考虑过这种解决方案。但不幸的是,我认为这无济于事。因为如果用户没有管理员权限,我们的“辅助插件”或虚拟安装程序也将没有管理员权限。当然,您的解决方案将帮助真正解决问题的管理员。但我想避免用户需要管理员的帮助。 我已经尝试在注册表编辑器中更改没有管理员权限的 HKCU 注册表值。没有成功。没想到在代码中做的时候会得到其他结果。但我会一有时间就试试。谢谢!【参考方案3】:解决办法好像去Options > AddIns,然后点击GO
旁边Word Add-ins
:
然后选择所需的一项并单击启用/禁用。
【讨论】:
以上是关于出错后重新启用 Microsoft Word 加载项的主要内容,如果未能解决你的问题,请参考以下文章
“Word自动更改后的内容保存到通用文档模板上。是否加载该模板?“的解决办法
Microsoft Word 2007 向程序发送命令时出现问题解决方法