C# 错误后重新启用Microsoft Word加载项

C# 错误后重新启用Microsoft Word加载项,c#,ms-word,vsto,office-addins,word-addins,C#,Ms Word,Vsto,Office Addins,Word Addins,我们正在为MicrosoftWord开发一个COM插件(仅限于本地,不用于云计算)。我们的一位客户遇到问题,每次启动Word时,他都必须手动激活外接程序(Word选项>外接程序>Go…>勾选相应外接程序的复选框)。我可以通过强制加载项编码中的一个错误来重现这种行为,该错误导致Word崩溃。下次启动Word时,我收到以下消息: 当然,我以前多次看到过这个消息。但是:当时单击“是”的结果是外接程序被禁用。在这种情况下,重新启用一次就足够了(如上所述)。下次启动外接程序时,您不必再启用它 但是现在,

我们正在为MicrosoftWord开发一个COM插件(仅限于本地,不用于云计算)。我们的一位客户遇到问题,每次启动Word时,他都必须手动激活外接程序(Word选项>外接程序>Go…>勾选相应外接程序的复选框)。我可以通过强制加载项编码中的一个错误来重现这种行为,该错误导致Word崩溃。下次启动Word时,我收到以下消息:

当然,我以前多次看到过这个消息。但是:当时单击“是”的结果是外接程序被禁用。在这种情况下,重新启用一次就足够了(如上所述)。下次启动外接程序时,您不必再启用它

但是现在,除了禁用外接程序外,还创建了一个注册表项。该键具有外接程序的名称,位于以下路径:HKEY_CURRENT_USER/SOFTWARE/Microsoft/Office/15.0/Word/AddInLoadTimes

看起来这个键导致了前面描述的行为。因为如果我删除该键,启动Word,启用外接程序,关闭Word,将注册表中的“LoadBehavior”键设置为“3”,然后重新启动Word,一切都会恢复正常

现在我的问题是:是否有用户友好的替代方案来启用外接程序?由于拥有管理权限的用户最少,我们无法要求他们更改某些注册表项以解决问题

我希望有人能在这方面帮助我

致意


Timo

我们为避免这个问题而采取的方法是在代码中检查任何静态初始化方法/属性(当word试图激活加载项时调用),这些方法可能会引发异常(IO工作,RESTapi请求…等等)并添加到它们try/catch博客中,并向用户发送一些通知,告知加载项激活失败+记录异常


旁注:在我们解决同一问题时,除了您提到的解决此行为的注册表项之外,我们找不到任何东西,但我们面临相同的安全限制,因此这不是一个选项。

不太了解您的加载项,我可以想出两种可能性:

既然注册表项在HKCU中(通常是可访问的),为什么不创建第二个“helper add-in”来检查此项的问题,并在需要时重置它

否则,您可以使用Inno安装程序创建一个虚拟安装程序来为您执行此操作


我认为这是可能的,因为您的目标位置是
HKEY\U CURRENT\u USER/SOFTWARE/Microsoft/Office/15.0/Word/AddInLoadTimes
(即
HKCU
),通常可以在没有管理员权限的情况下进行修改:

解决方案似乎转到选项>加载项,然后单击
转到
旁边
Word加载项


然后选择所需的一个,然后单击启用/禁用

我也考虑过这种解决方案。但不幸的是,我认为这没有帮助。因为如果用户没有管理员权限,我们的“helper加载项”或虚拟安装程序也将没有管理员权限。当然,您的解决方案将帮助实际解决问题的管理员。但我想避免用户需要管理员的帮助。我已经尝试在注册表编辑器中更改HKCU注册表值,但没有管理员权限。没有成功。在代码中执行时,不希望得到其他结果。但我一有时间就会试试。非常感谢。是的,那当然会解决问题。但是我们的插件相当复杂,我们目前没有人力来进行更改。从长远来看,这肯定是一条路要走。但现在,我们正在寻找一种让用户的生活尽可能简单的方法。你是如何解决这个问题的?我恐怕不记得解决方法了。很抱歉