1

我想检查我正在使用 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);

文件名 - 只是 .exe 文件路径。

上面代码中提到的 WinVerifyTrust() 仅在机器至少连接到 Internet 一次时才返回“WinVerifyTrustResult.Success”。

然而在新机器上它返回“0x800b0100”即“Trust_e_nosignature”。

这是预期的行为吗?如果是,那么如何解决它?

我搜索了这个特定的行为,但没有找到任何令人满意的答案。

4

1 回答 1

2

Windows (7+) 附带一组非常有限的根证书。

这些是按需下载的。这可能是如果计算机以前从未连接到互联网,则无法验证验证码签名的原因(但是,我认为仅仅连接到互联网是不够的,但有些浏览到 https 页面或验证验证码签名是必要的,以便下载“正确的”根证书)。

您可以通过检查/计算连接到 Internet 之前和之后安装在 Internet Explorer 中的 ca 证书来验证这一点。

于 2016-07-12T15:16:17.737 回答