我使用Signtool.exe签署了一个文件,现在我正在尝试使用以下方法加载附加到该文件的证书
var cert = X509Certificate2.CreateFromSignedFile(filePath);
但他的行抛出错误“无法找到请求的对象。”。当我尝试从微软签名的dll中读取证书时,例如 EntityFramework.dll ,它没有任何问题。我以为可能是因为我在Trusted Store中没有证书,但即使在那里添加证书之后,它仍然会抛出错误。有谁知道如何解决这个问题?
答案 0 :(得分:1)
您可以使用wintrust组件收集签名信息
[DllImportAttribute("wintrust.dll", EntryPoint = "WTGetSignatureInfo", CallingConvention = CallingConvention.StdCall)]
internal static extern int WTGetSignatureInfo([InAttribute()] [MarshalAsAttribute(UnmanagedType.LPWStr)] string pszFile, [InAttribute()] System.IntPtr hFile, SIGNATURE_INFO_FLAGS sigInfoFlags, ref SIGNATURE_INFO psiginfo, ref System.IntPtr ppCertContext, ref System.IntPtr phWVTStateData);
这将收集microsoft规定的任何可签名文件的签名详细信息。但请确保在单线程单元模型下执行给定的函数。否则,您会发现签名的脚本文件(如.js / .vbs等)的奇怪结果。