我有一些控件正在尝试添加到自定义模板的文档操作窗格中。每当我这样做时,我都会收到此错误:
System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
我遇到了与此问题相关的各种 搜索结果,根据其中一些结果,在启用文档地图时,似乎在以前版本的 Word 中可能会发生这种情况(已在 2010 年移至新的导航窗格中) . 但我的绝对是残疾人,所以这没有多大帮助。我尝试启用它以查看差异,并且错误更改为上述错误和这两者的某种组合:
Exception from HRESULT: 0x8004063B
You are currently viewing this document in multiple windows. To attach an XML expansion pack, you must first close all additional windows so that you are viewing the document in only one window.
(我没有在多个窗口中查看它或尝试附加 XML 模式)
但这有点无关紧要,我只是在这里记录下来以供后代使用。
无论如何,这只发生在某些机器上。这就是我发现的不同之处。有一个复选框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在用它签名时带有时间戳,所以它仍然应该被认为是好的(如果你通过文件系统检查它,这个检查出来)。此外,加载我的加载项时使用此 DLL (加载过程中的#2)。因此,如果加载项完全加载,那么以后的使用应该无关紧要。
所以这是我的问题。为什么在加载加载项时 vstoee.dll 受信任,但在将控件添加到文档操作窗格时在某些计算机上不受信任?