【问题标题】:Where is the latest version of the Office COM AddIn shim code?最新版本的 Office COM 插件 shim 代码在哪里?
【发布时间】:2020-02-03 12:31:44
【问题描述】:
我们仍在使用 2010 年推出的 shim 代码(当我们第一次获得 64 位 Office 时)。是否有 Microsoft 发布的更新版本?
如果有,我在哪里可以找到它?
其他信息: 用 C# 编写的加载项,即使已签名,也不会被视为由 Office 签名。 Office 将 AddIn 视为 .NET 包装 DLL(我认为是 mscoree.dll),并正在查看它是否已签名。
因此,Office 团队中的某个人编写了一个 C++ shim。它的唯一目的是成为在 Office 中注册的插件,并在加载时调用实际的 .NET 插件。作为一个原生 C++ 应用,Office 会查看它的数字签名以查看 AddIn 是否已签名。
【问题讨论】:
标签:
office-interop
office-addins
excel-addins
【解决方案1】:
最后一个可用的 COMAddin Shim 向导是 2010 年,从那以后我找不到任何可用的东西。 2016年this综合Shim文章依然引用2010版本。
但我猜您的问题实际上是关于如何签署插件,使其在 Office 插件对话框窗口中显示为已签名?
为此,您需要对 shim.dll 进行签名,然后定位到 shim.dll 位置,而不是注册表 CLSID 键中的默认 mscoree.dll。
Office 查找 Software\Microsoft\Office\OFFICEAPPNAME\Addins\[Addin.name] 注册表(或等效的 32 位 WOW6432Node 节点)中列出的所有插件,然后从 HKCR\[Addin.Name]\CLSID 获取 CLSID,然后在 HKCR\[CLSID] 中加载从那里找到的 dll。当它这样做时,它将识别您的 shim.dll 及其签名,而不是目标计算机上未签名的 .NET mscoree.dll。