我对签名已编译的可执行文件有新的要求。我已将带有私钥的证书导入Windows证书存储区中的Current User \ Personal密钥存储区。
如果我以condor_usr帐户之一登录Win7 VM(例如,通过远程桌面),则以该帐户运行的编译程序将成功签署可执行文件,而以其他帐户运行的编译程序将无法签署可执行文件。例如,如果我以condor_usr2身份登录,则在condor_usr2下运行的编译将成功签名,而在condor_usr1下运行的编译将无法签名。如果我注销,则两个帐户均无法签名。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(264,9): error MSB3482: An error occurred while signing: The system cannot find the file specified.
打开一些审核日志记录,发现与签名失败同时发生的以下日志。
目标
无论编译运行的是哪个帐户,并且都不需要用户登录,都成功签名已编译的可执行文件。
到目前为止,我已经弄清楚了>
正在编译的代码/项目是Visual Studio 2017解决方案。
签名方法是ClickOnce清单签名(VS2017项目中的一个选项)。
除非另有说明,否则这些操作无效,并且已还原。
将condor_usr帐户添加到Cryptographic Operators组。
PsExec -h make.bat
获取帐户的提升令牌。https://docs.microsoft.com/en-us/sysinternals/downloads/psexec