Raphael,
Use o WindowsPowerShell
Você precisa referenciar a library
jSHell
Sub GravaArqCertificados(CaminhoArquivo as String, NomeArquivo as String)
Dim SH as Shell
sh.Initialize("SH", "C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe", Array As String($"get-childitem -Recurs -path cert:\CurrentUser\My | format-list -property * > ${NomeArquivo}"$))
sh.WorkingDirectory = CaminhoArquivo
sh.Run(10000)
StartMessageLoop
End Sub
.
.
.
Sub SH_ProcessCompleted (Success As Boolean, ExitCode As Int, StdOut As String, StdErr As String)
If Success And ExitCode = 0 Then
Log("Success")
Log(StdOut)
Else
Log("Error: " & StdErr)
End If
End Sub
Exemplo de Utilização:
GravaArqCertificados(File.DirApp, "certificados.txt")
Se tudo der certo (aqui no meu teste funcionou TOTAL!), no diretório especificado haverá um arquivo texto de nome especificado contendo todas as informações dos certificados em "Usuário Atual\Pessoal\Certificados", EXCETO a chave pública e muito menos a chave privativa.
A partir daí, é ler o arquivo e interpretar os dados nele contidos. Você vai perder uns 10 minutos estudando esses dados.
Talvez seja preciso acertar o caminho do PowerShell na sua máquina, mas isso é galho fraco.
O código acima com toda certeza pode e DEVE ser melhorado e enriquecido. Foi escrito às pressas e sem muito cuidado, apenas pra demonstrar o processo.
A alternativa é criar uma DLL em "C" pra acessar a CryptoAPI do Windows, e um programa em Java usando JNI pra acessar essa DLL em "C", uma vez que Java não tem como acessar nativamente componentes COM e ActiveX do Windows, ou seja: esquece isso!
Espero ter ajudado.
Boa sorte!