我必须找出智能卡中是否有给定的证书。为此,我首先使用 CryptAcquireContext 获取 HCRYPTPROV(CSP 句柄),然后使用它打开系统存储(OpenSystemStore),然后枚举证书。
它在 Windows XP 上完美运行。在 Windows 7 上,由于存储在存储中的过时/旧证书而出现问题。Windows 从智能卡存储/复制其存储中的证书。这意味着如果我在智能卡上有两个证书 Cert1 和 Cert2,并且我已经使用智能卡登录到 Windows。然后 Windows 将这些证书存储在其存储中,我们可以通过转到 IE->Internet 选项->内容->证书来查看。然后,如果我从智能卡中删除 Cert2,那么 Cert2 也会显示在 Windows 应用商店中,这会破坏我的代码。
因此,我需要枚举仅在智能卡上可用而不在 Windows 商店中可用的证书。