【发布时间】:2020-05-31 00:18:07
【问题描述】:
我目前正在尝试通过 cmd 在 Excel 和 Word 和 Powershell 脚本中签署 VBA 宏。
为此,我使用 Microsoft signtool.exe 作为 Windows 10 SDK 的一部分: https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
使用以下命令签署 Powershell 脚本可以正常工作:
signtool.exe 签名 /f "testca.pfx" /fd SHA256 /p "123456" "test.ps1"
对于 Office 文档中的宏签名,还需要“Microsoft Office Subject Interface Packages for Digitally Signing VBA Projects”: https://www.microsoft.com/en-us/download/confirmation.aspx?id=56617
我下载了.exe并执行了它。
使用 "regsvr32" 注册 .dll 文件也有效。 .dll 文件的路径在注册表中可见。
还安装了 Microsoft Visual C++ 2015-2019 Redistributable (x86)。
所以理论上我现在应该可以签署 Excel 宏了。 但是,我的服务器收到带有错误代码的错误消息,我在 Google 中找不到任何相关信息。
这是完整的输出:
考虑了以下证书:
颁发给:TestCA
发布者:TestCA
过期:2021 年 2 月 3 日星期三 08:53:09
SHA1 哈希:E19CE363C88CDBCE677FA170008D0AB0D98A02DC经过 EKU 过滤后,剩下一个证书。过期过滤器后,剩下 1 个证书。 私钥过滤后,剩下 1 个证书。选择了以下证书:
颁发给:TestCA
发布者:TestCA
过期:2021 年 2 月 3 日星期三 08:53:09
SHA1 哈希:E19CE363C88CDBCE677FA170008D0AB0D98A02DC将附加以下附加证书:完成添加
其他商店 SignTool 错误:发生了意外的内部错误。
错误信息:“错误:SignerSign() 失败。(-2147220492/0x800403f4)
我现在已经在不同的计算机上多次执行上述安装,所有计算机都具有管理员权限和当前更新:
- 私人 win10 计算机:.ps1 和 .xlsm 签名是可能的
运行 win10 的 VM:可以进行 .ps1 和 .xlsm 签名
带有 win 7 的私有 VM:只有 .ps1 签名有效
- 带有 Win10 的私有 VM:仅 .ps1 签名有效
- 带有 Windows Server 2012 的终端服务器:只有 .ps1 签名有效
您可能会说signtool.exe 就是这样工作的,因为我可以在所有机器上签署 PowerShell 脚本。
但签署宏并不总是有效。大概和接口包有关吧?
我希望有人以前遇到过同样的问题并且可以提供帮助。因为我要疯了。非常感谢!
【问题讨论】:
标签: excel vba code-signing signing signtool