正在读取正在执行的程序集签名pfx/cert
这是试图了解新材料的学术问题。在正规学校的意义上不是学术性的,而是在持续教育意义上,想要处理我以前从未接触过的发展领域。正在读取正在执行的程序集签名pfx/cert
所以在我的理解中,我创建了一个程序集并通过“签名”创建了一个强名称/ X509Certificate。
所以我创建了一个空的winapp。我转到签名选项卡上的项目属性并使用密码对程序集签名。
将文件testing.pfx添加到我的项目中。
在表单加载我然后执行此代码思考我会看到我的程序集签署证书只有我不是因为它是空的......?
Assembly ass = Assembly.GetExecutingAssembly();
Module mod = ass.GetModules().First();
X509Certificate cert = mod.GetSignerCertificate();
cert为空。这是为什么?我是否做了错误的检索证书,或者我的脑袋里混杂着什么东西,我寻找的东西不是我正在寻找的地方?
谢谢
编辑
@p市盈率的我用读您的文章和MSDN后以下。
signtool符号/一个C:/....../ MyFile.exe
signtool符号/ F C:/....../ MyCert.pfx/P MyPassword输入C:/ ....../MyFile.exe
两人都说他们成功完成。但是,运行上面的代码块仍会生成一个空证书。
现在我可能错过了或者做错了我正在使用visual studio调试版本,这是我用于签名的exe文件的路径。
C:.... \ LicensedControlTest \ OBJ \ 86 \调试
您需要验证码程序集签名。您可以使用文件签名工具(Signcode.exe)来完成此操作,该工具将使用Authenticode签名在程序集上签名。基本上,你只需使用signcode
运行一个命令,它将Authenticode签署你的程序集。
如果您查看GetSignerCertificate
的文档,您将看到如果程序集未进行authenticode签名,则会出现null
。
signcode /spc myCertificate.spc /v myKey.pvk myAssembly
这是基础知识,你可以在这里找到更多的信息在MSDN http://msdn.microsoft.com/en-US/library/9sh96ycy(v=vs.80).aspx。
请参阅编辑。我相信你是100%正确的,我只是做错了什么。 – GPGVM 2014-11-10 14:01:33
有两种不同的签名经常会让人感到困惑。强名称签名和代码签名(即数字签名,例如Authenticode)。见[this](http://blogs.msdn.com/b/ericlippert/archive/2009/09/03/what-s-the-difference-part-five-certificate-signing-vs-strong-naming.aspx )。只有后一种签名才有证书。您只需将一个强大的名称应用于装配。 – 2014-11-08 04:25:38
@mikez谢谢。 Eric的文章帮助解释了这些差异。 – GPGVM 2014-11-09 15:47:51