我问这个是因为我很绝望,我找不到任何关于这个问题的帖子。
在我的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版本上的魅力一样,从Windows XP到Windows 8.1。在Windows 10中,它首次尝试。如果我再次这样做,就会等待等待。
我试图实现一个60秒的“timout计时器”:提供的一段代码就会超时。
如果用户从PC上移除包含证书的USB密钥(或智能卡)并再次插入,问题就解决了。
有没有人有这种行为的解决方案?我很绝望,升级到Windows 10的客户对我很生气,我不知道该怎么做。
答案 0 :(得分:0)
我终于找到了这个Windows 10漏洞的解决方案。它实际上是一个"解决方法"但100%工作,没有问题。
解决方法是创建一个"全球" X509存储在您的应用程序中,并且永远不会关闭它。您只需在第一次需要时打开(或者在启动应用程序时打开),然后再打电话给" store.Close();"
您可以在应用程序的所有会话期间调用store.Certificates.Find(....),如果您关闭商店并再次重新打开,它将永远不会显示发生的问题。 也许不是一个美丽的解决方案,但100%的工作。 我希望这能帮助像我这样的人找到这个该死的win10 bug。