【发布时间】:2015-11-10 08:12:49
【问题描述】:
我问这个是因为我很绝望,我在任何地方都找不到任何谈论这个问题的帖子。
在我的 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 秒的“超时计时器”:提供的代码段刚刚超时。
如果用户从 PC 中取出包含证书的 USB 密钥(或智能卡)并重新插入,问题就解决了。
有人对此行为有解决方案吗?我很绝望,升级到 Windows 10 的客户对我很生气,我不知道该怎么办。
【问题讨论】:
-
您的智能卡与 Windows 10 兼容吗?
-
当然可以,否则第一次就不行了!我第一次使用该代码时,我获得了证书,选择一个并使用它对文件进行数字签名或验证所有者。没问题。但是我第二次运行该代码时,我只是永远等待。仅在 Win10 上。
-
不同的智能卡会发生这种情况吗?你用的是什么智能卡?这可能是智能卡中间件的故障。
-
"当然可以,否则第一次就不行了!"它什么也没说。该卡可能(有时)有效,但未经供应商测试,因此不支持此方案。我们在使用 eToken Pro 令牌时遇到了各种问题,它们在现代操作系统版本的某些情况下会失败。支持人员表示此操作系统尚不支持,并通过特殊补丁获得支持以解决较新操作系统中的这些问题。
-
@FabioLamberti 尝试启用智能卡中间件的日志记录。也许会有一些对你有帮助的东西。您还可以启用 CAPI2 事件日志(事件查看器->windows 日志->应用程序和服务->microsoft->windows->CAPI2)。
标签: c# certificate windows-10 x509certificate certificate-store