我目前正在尝试通过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文档中签名宏,还需要“用于数字签名VBA项目的Microsoft Office主题接口包”:https://www.microsoft.com/en-us/download/confirmation.aspx?id=56617
我下载了.exe并执行了它。
使用以下方法注册.ddl文件:“ regsvr32”也可以。 .dll文件的路径在注册表中可见。
还安装了Microsoft Visual C ++ 2015-2019 Redistributal(x86)。
所以从理论上讲,我现在应该可以对Excel宏进行签名。但是,我的服务器收到一条带有错误代码的错误消息,我在Google中找不到任何错误消息。
这是完整的输出:
考虑了以下证书:发给:TestCA颁发者:TestCA过期:2021年星期三08:53:09SHA1哈希:E19CE363C88CDBCE677FA170008D0AB0D98A02DC
经过EKU过滤后,只剩下一个证书。到期过滤后,剩下1个证书。经过私钥过滤后,剩下1个证书。选择了以下证书:发给:TestCA颁发者:TestCA过期:2021年星期三08:53:09SHA1哈希:E19CE363C88CDBCE677FA170008D0AB0D98A02DC
将附加以下其他证书:完成添加其他商店SignTool错误:发生意外的内部错误。错误信息:“错误:SignerSign()失败。(-2147220492 / 0x800403f4)
我现在已经在不同的计算机上多次执行如上所述的安装,全部具有管理员权限和当前更新:
带有win10的VM工作:.ps1和.xlsm签名是可能的
具有win 7的私有VM:仅.ps1签名有效
您可能会说signtool.exe可以这样工作,因为我可以在所有计算机上签署Powershell脚本。但是签名宏并不总是有效。可能与接口包有关?
我希望有人以前遇到过同样的问题,可以为您提供帮助。因为我为此而发疯。非常感谢!
嗯,我花了很长时间,但是现在我已经开始跑步了。如果其他人有同样的问题:
“用于数字签名VBA项目的Microsoft Office主题接口程序包。.zip包含一个readme.txt,其中指出必须安装” Microsoft Visual C ++ Redistributal(x86)”。它背后的链接下载了最新版本的“ Microsoft Visual C ++ 2015-2019 Redistributal(x86)”。
我现在已经测试了过去几年的所有可用版本,唯一可行的版本是2010版本。我不知道为什么readme.txt指的是不同的版本,但是该错误和“解决方案”肯定是可复制的。
无论如何,使用Visual C ++ 2010,一切都很好!