X509Certificate2UI.SelectFromCollection закрывает приложение - PullRequest
0 голосов
/ 07 декабря 2018

На данном клиенте при доступе к функции 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();
    }

Кто-нибудь знает, что является причиной этой ошибки?

...