在给定的客户端上,当访问X509Certificate2UI.SelectFromCollection函数时,应用程序将关闭,甚至不进行错误处理。
此功能将打开一个Windows对话框,供用户选择数字证书。
我使用的是.NET Framework 4.5,问题发生在装有Windows 10 Pro的计算机上,该计算机具有大约8个有效证书。
我做了一个测试应用程序,以获取日志并准确找出问题发生的位置,这就是使用X509Certificate2UI.SelectFromCollection函数的时间。
static void Main(string[] args)
{
Console.WriteLine("Iniciando a aplicação para seleção de certificado");
try
{
Console.WriteLine("new X509Store");
X509Store store = new X509Store(StoreLocation.CurrentUser);
Console.WriteLine("store.Open");
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
// Obtém a coleção de certificados instalados
Console.WriteLine("store.Certificates");
X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
// Excluí da coleção certificados vencidos, comparando a data corrente
Console.WriteLine("collection.Find");
X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
Console.WriteLine("X509Certificate2UI.SelectFromCollection");
X509Certificate2Collection certificados = X509Certificate2UI.SelectFromCollection(fcollection, "Certificados Cadastrados", "Selecione seu certificado", X509SelectionFlag.SingleSelection);
Console.WriteLine("store.Close");
store.Close();
Console.WriteLine("certificados.Count");
if (certificados.Count == 0)
{
}
Console.WriteLine("certificados[0]");
var teste = certificados[0];
Console.WriteLine("certificados[0].Subject");
var texto = certificados[0].Subject;
}
catch (Exception ex)
{
Console.WriteLine("ex.Message");
Console.WriteLine(ex.Message);
}
Console.WriteLine("Finalizando");
Console.ReadKey();
}
有人知道导致此错误的原因吗?