可以通过.NET代码签署一个二进制文件吗? (没有signtool.exe)
问题描述:
我有以下要求,签署一个证书的二进制文件,但没有signtool.exe;这个想法是通过代码来完成的。可以通过.NET代码签署一个二进制文件吗? (没有signtool.exe)
你知道这有可能吗?
答
您将需要使用从mssign32.dll导出的SignerSign或SignerSignEx函数。
要使用这些,你需要定义SIGNER_SUBJECT_INFO
,SIGNER_FILE_INFO
,SIGNER_CERT
,SIGNER_SIGNATURE_INFO
等结构的管理版本,然后正确指定的P/Invoke签名的本地方法。
在this blog post的中途,有一个C++的例子叫做SignerSignEx
; Mark已将其移植到此* answer中的C#中。
重复? http://*.com/questions/692565/how-do-you-programmatically-resign-a-net-assembly-with-a-strong-name – Nikolay 2012-03-29 09:51:22
确实。感谢您发现这一点。那就是说,我该怎么做?删除这个问题,还是保持开放状态,因为它没有以同样的方式提问? – Vinzz 2012-03-29 11:58:23
不重复。 'signtool.exe'(在这里引用)生成Authenticode签名(对于任何PE文件); “强命名”(在另一个问题中提到)使用'sn.exe',仅用于托管程序集。 – 2012-03-29 12:45:38