将控件添加到 Word 的文档操作窗格会导致 E_FAIL

Adding controls to Word's document actions pane results in E_FAIL

我有一些控件要添加到自定义模板的文档操作窗格中。每当我这样做时,我都会收到此错误:

System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.

我遇到了一个与此问题相关的 variety of search results,基于其中的一些问题,在启用文档结构图(已移至2010 年的新导航窗格)。但我的肯定是残疾人,所以这没什么帮助。我尝试启用它以查看差异,并且错误更改为上述错误和这两个错误的某种组合:

不过这有点无关紧要,我只是记录在这里以供后人使用。

无论如何,这只发生在某些机器上。这是我发现的不同之处。 File > Options > Trust Center > Trust Center Settings > Message Bar 中有一个名为 Enable Trust Center Logging 的复选框。这个未记录的设置输出到:

%USERPROFILE%/AppData/Local/Microsoft/Office/TCDiag/WDTCD.log

在那个日志文件中,我看到很多这样的条目:

Content Type: SmartTags
Binary: "c:\Program Files (x86)\Common Files\Microsoft Shared\VSTO\vstoee.dll"
Certificate: Microsoft Corporation
Certificate Signature: Microsoft Code Signing PCA
Certificate Status: Trusted
Trust Center Decision: Enable Content

其中大部分在操作面板工作的机器和不工作的机器之间是相同的。但是,上面 vstoee.dll 的条目并不相同。它在非工作机器上这样说:

Certificate Status: Untrusted
Trust Center Decision: Block Content

Microsoft Corporation 证书在我的信任发布者列表中,它已于 2015 年 7 月 22 日过期。这是一个代码签名证书,vstoee.dll 是 timestamped when signed with it, so it should still be recognized as good (if you check it via the filesystem, this checks out). Further, this DLL is used when loading my add-in(加载过程中的#2)。因此,如果加载项完全加载,后面的用法应该无关紧要。

所以这是我的问题。为什么 vstoee.dll 在加载加载项时受信任,但在向文档操作窗格添加控件时在某些计算机上不受信任?

事实证明 Microsoft Corporation 证书实际上不在受信任的发布者列表中。还有其他几个同名的,但有效期不同。将它添加到该列表中解决了问题。

遗憾的是,这并不能解释为什么加载项能够加载,因为它使用相同的文件。