我的.NET exe是使用signtool签名的.
使用这段代码,我可以验证证书本身的有效性:
使用这段代码,我可以验证证书本身的有效性:
var cert = X509Certificate.CreateFromSignedFile("application.exe"); var cert2 = new X509Certificate2(cert.Handle); bool valid = cert2.Verify();
但是,这只会检查证书本身,而不是EXE的签名.因此,如果EXE被篡改,则此方法不会检测到它.
如何检查签名?
解决方法
你需要从wintrust.dll调用(P / Invoke)WinVerifyTrust()函数.有(据我所知)在托管.NET中没有其他选择.
有人已经就这个问题问了这个问题.它不被接受,但它应该是正确的(我只滚动). Take a look.
你也可以看看this guide,但他们真的做同样的事情.