使用Microsoft Crypto API(Windows证书存储)时如何隐藏和使用对话框

我想在我的Java应用程序中利用Windows证书存储。 我能够从Windows-MY加载一个密钥库,它具有我需要的所有别名/证书,但是当加载它时,我面临一个对话框,询问“请插入智能卡”。 如果我点击几次取消,他们的密钥库仍然会加载正确的内容。

有没有办法抑制这个对话框? 还有没有办法使用Java的Windows证书select框? 我在网上看到的唯一答案是这样的: https : //social.msdn.microsoft.com/Forums/en-US/52dca221-1e05-44c1-8c45-9e0d4a807853/java-keystoreload-for-windowsmy-pops-插入智能卡窗口?forum = windowssecurity ,但我不想删除任何东西,因为我不希望用户这样做。

以下是我如何加载密钥库:

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

我从未尝试通过密钥库加载证书,但是通过系统属性提供证书。

 System.setProperty("javax.net.ssl.keyStoreType", "Windows-MY"); System.setProperty("javax.net.ssl.keyStore", "NONE"); System.setProperty("javax.net.ssl.trustStoreType", "Windows-ROOT"); System.setProperty("javax.net.ssl.trustStore", "NONE"); 

另请参阅java SSL和cert keystore以及如何将Windows密钥存储库(MCS)与JDBC一起使用?