我想检查我正在使用C#的项目中.exe文件之一的信任度。
我已提及-http://pinvoke.net/default.aspx/wintrust/WinVerifyTrust.html
这是我的代码段。
WinTrustData wtd = new WinTrustData(filename);
Guid guidAction = new Guid(WINTRUST_ACTION_GENERIC_VERIFY_V2);
WinVerifyTrustResult result = WinVerifyTrust(INVALID_HANDLE_VALUE, guidAction, wtd);
bool valid = (result == WinVerifyTrustResult.Success);
filename-就是.exe文件路径。
仅当计算机至少连接到互联网一次时,以上代码中提到的WinVerifyTrust()才会返回“ WinVerifyTrustResult.Success”。
但是,在新机器上,它将返回“ 0x800b0100”,即“ Trust_e_nosignature”。
这是预期的行为吗?如果是,那么如何解决呢?
我搜索了此特定行为,但未找到满意的答案。
Windows(7+)随附的根证书数量非常有限。
那些是按需下载的。这可能就是为什么如果以前从未将计算机连接到Internet,则无法验证authenticode签名的原因(但是,我仍然认为仅连接到Internet是不够的,但是有些浏览到https页面或验证authenticode签名是为什么的原因。是必需的,以便下载“正确的”根证书)。
您可以通过在连接到Internet之前和之后检查/计算在Internet Explorer中安装的ca证书来验证这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句