Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
signtool.exe错误:签名Excel宏时SignerSign()失败(-2147220492/0x800403f4)_Excel_Vba_Code Signing_Signing_Signtool - Fatal编程技术网

signtool.exe错误:签名Excel宏时SignerSign()失败(-2147220492/0x800403f4)

signtool.exe错误:签名Excel宏时SignerSign()失败(-2147220492/0x800403f4),excel,vba,code-signing,signing,signtool,Excel,Vba,Code Signing,Signing,Signtool,我目前正试图通过cmd在Excel、Word和Powershell脚本中对VBA宏进行签名 为此,我使用Microsoft signtool.exe作为Windows 10 SDK的一部分: 使用以下命令签署Powershell脚本可以正常工作: signtool.exe sign/f testca.pfx/fd SHA256/p 123456 test.ps1 对于Office文档中的宏签名,还需要用于对VBA项目进行数字签名的Microsoft Office主题界面包: 我下载了.exe

我目前正试图通过cmd在Excel、Word和Powershell脚本中对VBA宏进行签名

为此,我使用Microsoft signtool.exe作为Windows 10 SDK的一部分:

使用以下命令签署Powershell脚本可以正常工作:

signtool.exe sign/f testca.pfx/fd SHA256/p 123456 test.ps1

对于Office文档中的宏签名,还需要用于对VBA项目进行数字签名的Microsoft Office主题界面包:

我下载了.exe并执行了它

使用:regsvr32注册.dll文件也有效。.dll文件的路径在注册表中可见

<微软> VisualC++ + 2015-2019可重新分发的X86也被安装。

所以理论上我现在应该可以签署Excel宏了。 然而,我的服务器收到了一条带有错误代码的错误消息,我在谷歌上找不到任何关于它的信息

以下是完整的输出:

考虑了下列证书: 发给:TestCA 发行人:TestCA 到期日期:星期三2021年2月3日08:53:09 SHA1散列:E19CE363C88CDBCE677FA170008D0AB0D98A02DC

经过EKU筛选后,剩下一个证书。过期筛选后,剩余1个证书。 私钥筛选后,剩余1个证书。已选择以下证书: 发给:TestCA 发行人:TestCA 到期日期:星期三2021年2月3日08:53:09 SHA1散列:E19CE363C88CDBCE677FA170008D0AB0D98A02DC

将附加以下附加证书:完成添加 其他存储签名工具错误:发生意外的内部错误。 错误信息:错误:SignerSign失败-2147220492/0x800403f4

我现在已经在不同的计算机上多次执行了上述安装,所有这些计算机都具有管理员权限和当前更新:

私有win10计算机:.ps1和.xlsm可以签名 win10来自工作的VM:.ps1和.xlsm签名是可能的

私人虚拟机与win 7:only.ps1签名有效

使用Win10:only.ps1签名的专用VM有效 带Windows Server 2012的终端服务器:仅.ps1签名有效 您可能会说signtool.exe就是这样工作的,因为我可以在所有机器上对PowerShell脚本进行签名。 但对宏进行签名并不总是有效的。可能与接口包有关


我希望有人以前也遇到过同样的问题,并且能够提供帮助。因为我快疯了。非常感谢

嗯,我花了很长时间,但我现在已经开始跑步了。如果其他人也有同样的问题:

微软Office主题接口包,用于对VBA项目进行数字签名。ZIP包含Read。txt,必须安装微软VisualC++ +重新分配X86。它的链接下载了微软Visual C++ +2015-2019重新分发X86,这是最新版本。 我现在已经测试了过去几年的所有可用版本,唯一有效的版本是2010版本。我不知道为什么readme.txt引用了不同的版本,但是bug和解决方案肯定是可以复制的

无论如何,使用Visual C++ 2010,一切都很好!