C# 证书存储';s Certificates.Find()不';我找不到证书

C# 证书存储';s Certificates.Find()不';我找不到证书,c#,certificate,C#,Certificate,以下是我的简单方法: 私有静态X509Certificate2 GetCertificateFromStore(StoreLocation StoreLocation,字符串certName){ var store=new X509Store(StoreLocation.LocalMachine); 试一试{ 打开(OpenFlags.ReadOnly); var certs=store.Certificates.Find(X509FindType.FindBySubjectName,certN

以下是我的简单方法:

私有静态X509Certificate2 GetCertificateFromStore(StoreLocation StoreLocation,字符串certName){
var store=new X509Store(StoreLocation.LocalMachine);
试一试{
打开(OpenFlags.ReadOnly);
var certs=store.Certificates.Find(X509FindType.FindBySubjectName,certName,true);
返回certs.Count==0?空:certs[0];
}
最后{
store.Close();
}
}
调试局部变量显示已加载
store.Certificates
,并包含两个证书-默认的“localhost”一个和我导入的一个,因此已成功打开正确的存储

但是,
Find()
方法始终返回空结果,而不管我搜索哪个证书,也不管我使用的是
FindBySubjectName
还是
FindByThumbprint


有什么想法吗?它是一个简单的控制台应用程序,仅为学习和测试证书加载而创建,即,在项目配置或其他任何地方,除了默认设置之外,几乎没有其他设置。

请尝试将false作为存储区的第三个参数。Certificates.Find()方法-您的证书可能无效并被排除在外。

谢谢,就是这样!:)虽然我有点困惑,Windows本身添加的内置默认证书是无效的。“有效”到底是什么意思?我的所有证书都被认为无效,但使用Windows证书管理器检查它们表明所有证书都正常。