我想使用Java中的密钥存储访问Windows用户证书存储(“Windows-MY”)中的证书。
这是我使用的代码:

    KeyStore ks = KeyStore.getInstance("Windows-MY", "SunMSCAPI");
    ks.load(null, null);

不幸的是,执行此代码确实会从窗口中打开一个弹出窗口,要求用户选择智能卡。

在此弹出窗口中单击“取消”后(多次),将正确构建密钥库,并且可以访问证书。

在Windows服务下禁用智能卡服务会有所帮助,但随后将无法再使用智能卡(我们在另一个用例中使用了智能卡)。
如何在没有此弹出窗口的情况下访问Windows应用商店?

最佳答案

就我而言,发生的事情是智能卡软件(或我不确定的某些智能卡中间件)写了一个注册表项:more info here

注册表路径:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ Defaults \ Provider(在Windows Xp和7上,均为32 64位,未在Win8上测试)

删除此注册表项解决了我的弹出问题。出于谨慎起见,请在删除条目之前将其导出,这样,如果出现问题,可以将其还原。在找到有问题的条目之前,我必须删除并还原多个条目。

08-06 00:15