证书存储窗口10 C#
本文关键字:窗口 存储 证书 | 更新日期: 2023-09-27 18:21:15
我问这个问题是因为我很绝望,在任何地方都找不到任何关于这个问题的帖子。
在我的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秒的"超时定时器":提供的代码段刚好超时。
如果用户从电脑中取出包含证书的USB密钥(或智能卡)并再次插入,问题就解决了。
有人能解决这种行为吗?我很绝望,升级到windows 10的客户对我很生气,我不知道该怎么办。
我终于找到了解决这个Windows 10错误的方法。这实际上是一种"变通方法",但100%有效,不会造成任何问题。
解决方法是在你的应用程序中创建一个"全局"X509Store存储,永远不要关闭它。你只需在第一次需要时打开(或在应用程序启动时),永远不要调用"store.close();"
你可以打电话给商店。证书。在应用程序的所有会话期间查找(….),它将永远不会显示如果您关闭存储并重新打开所发生的问题。也许这不是一个美丽的解决方案,但100%有效。我希望这能帮助像我一样发现这个该死的win10 bug的人。