.net SignTool错误:访问被拒绝

.net SignTool错误:访问被拒绝,.net,code-signing,authenticode,.net,Code Signing,Authenticode,我试图在安装了VS2010的Windows Server 2008 R2 x64上使用新的代码签名证书对.NET应用程序进行身份验证码签名,但SignTool继续响应访问被拒绝: SignTool.exe sign/v/a/sha1 MyApplication.exe 已选择以下证书: 发给: 发行人:VeriSign 3级代码签名2010 CA 到期时间:2012年6月28日星期四01:59:59 SHA1哈希: 已完成添加附加存储 SignTool错误:访问被拒绝。 SignTool错误:尝

我试图在安装了VS2010的Windows Server 2008 R2 x64上使用新的代码签名证书对.NET应用程序进行身份验证码签名,但SignTool继续响应访问被拒绝:

SignTool.exe sign/v/a/sha1 MyApplication.exe
已选择以下证书:
发给:
发行人:VeriSign 3级代码签名2010 CA
到期时间:2012年6月28日星期四01:59:59
SHA1哈希:
已完成添加附加存储
SignTool错误:访问被拒绝。
SignTool错误:尝试签名时出错:MyApplication.exe
成功签名的文件数:0
警告数:0
错误数:1
证书安装到用户的个人存储中,并且用户是本地Administrators组的成员。我还尝试使用.pfx文件进行签名,但始终出现相同的错误。禁用UAC提示也没有效果


有什么想法吗?

原因是私钥保护已启用,但除非以管理员身份运行命令提示符,否则不会出现相应的“应用程序正在请求访问受保护的项目”提示符


为了解决这个问题,我必须删除证书和密钥,然后从.pfx文件重新导入,这次没有选择强私钥保护选项。

我还让这个pb在windows 8中使用signtool.exe。要解决此问题,您必须直接从c:\windows\system32\cmd.exe运行cmd.exe,然后单击“以管理员身份运行”。

我也遇到了同样的问题,但在我的情况下,我尝试从在LocalSystem帐户下运行的windows服务运行cmd.exe。将其更改为常规帐户解决了此问题。

解决此问题的方法是意识到我的exe是只读的。删除写保护后,SignTool可以完成其工作,而不会出现其他问题


(信用证:eselk的评论位于)

对于未来的读者:还要确保你试图签署的文件没有标记为只读,这是我的问题。谢谢@eselk,你的建议对我来说是正确的解决方案。发布其他人的评论作为回答是完全可以接受的,但目前你的答案比实际的解决方案有更多的噪音。如果你真的想表扬eselk,那么你只需在“表扬归于@eselk的评论”的结尾做一个小注释。理想情况下,应该是他发布答案,但那是5年前的事了。
SignTool.exe sign /v /a /sha1 <thumbprint> MyApplication.exe

The following certificate was selected:
    Issued to: <redacted>
    Issued by: VeriSign Class 3 Code Signing 2010 CA
    Expires:   Thu Jun 28 01:59:59 2012
    SHA1 hash: <thumbprint>

Done Adding Additional Store
SignTool Error: Access is denied.
SignTool Error: An error occurred while attempting to sign: MyApplication.exe

Number of files successfully Signed: 0
Number of warnings: 0
Number of errors: 1