证书存储窗口10 C#

时间:2015-11-10 08:12:49

标签: c# certificate windows-10 x509certificate certificate-store

我问这个是因为我很绝望,我找不到任何关于这个问题的帖子。

在我的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的客户对我很生气,我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我终于找到了这个Windows 10漏洞的解决方案。它实际上是一个"解决方法"但100%工作,没有问题。

解决方法是创建一个"全球" X509存储在您的应用程序中,并且永远不会关闭它。您只需在第一次需要时打开(或者在启动应用程序时打开),然后再打电话给" store.Close();"

您可以在应用程序的所有会话期间调用store.Certificates.Find(....),如果您关闭商店并再次重新打开,它将永远不会显示发生的问题。 也许不是一个美丽的解决方案,但100%的工作。 我希望这能帮助像我这样的人找到这个该死的win10 bug。