我问这个是因为我很绝望,而且我在任何地方都找不到任何谈论这个问题的帖子。
在我的 WinForms C# 应用程序中,我使用以下代码检索 Windows 证书:
X509Certificate2Collection Certificates = new X509Certificate2Collection();
X509Store store = new X509Store(StoreName.My);
store.Open(OpenFlags.ReadOnly);
//Filtering the list, showing only not-expired ones
Certificates = store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
store.Close();
从 Windows XP 到 Windows 8.1,这在每个 Windows 版本上都非常有效。在 Windows 10 中,它可以在第一次尝试时运行。如果我再做一次,它会卡住等待。
我试图实现一个 60 秒的“超时计时器”:提供的一段代码只是超时了。
如果用户从 PC 中取出包含证书的 USB 密钥(或智能卡)并重新插入,问题就解决了。
有没有人对此行为有解决方案?我很绝望,我升级到 Windows 10 的客户对我很生气,我不知道该怎么办。