我想使用java中的密钥存储区访问Windows用户证书存储区中的证书(" Windows-MY")。 这是我使用的代码:
KeyStore ks = KeyStore.getInstance("Windows-MY", "SunMSCAPI");
ks.load(null, null);
不幸的是,执行此代码确实会从Windows打开一个弹出窗口,要求用户选择智能卡。
在此弹出窗口中单击取消(多次)后,正确构建密钥库并可以访问证书。
在Windows服务下禁用智能卡服务会有所帮助,但智能卡不能再使用了(我们在另一个用例中使用智能卡)。 如何在没有此弹出窗口的情况下访问Windows应用商店?
答案 0 :(得分:3)
就我而言,发生的事情是智能卡软件(或我安装的某些智能卡中间件,我不确定)写了一个注册表项:more info here
注册表路径:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ Defaults \ Provider(在Windows Xp和7上,均为32位,未在Win8上测试)
删除此注册表项解决了我的弹出问题。只是为了小心,在删除之前导出条目,这样,如果出现问题,您可以恢复它。在找到有问题的条目之前,我必须删除并恢复几个条目。