2017-01-06 1 views
0

Я тестируя следующий код на моем компьютере:сертификата отсутствует из коллекции X509Store.Certificates

private static void Main(string[] args) 
{ 
    X509Store x509Store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 

    x509Store.Open(OpenFlags.ReadOnly); 

    foreach (var x509StoreCertificate in x509Store.Certificates) 
    { 
     Console.WriteLine(x509StoreCertificate.Thumbprint); 
    } 

    x509Store.Close(); 

    Console.WriteLine("Finished."); 
    Console.ReadLine(); 
} 

Когда я проанализировал список отпечатков пальцев, которые были показаны в консоли, я заметил, что есть который я импортировал сегодня, который не отображается в списке.

Это CERT я импортировал было сделано следующим образом:

  • Открыть MMC и добавить Certificates оснастку.
  • Я открыл оснастку на Computer account уровне
  • В обоих Personal и Trusted Root Certification Authorities я импортировал файл сертификата PFX-.

После выполнения вышеуказанного, я могу видеть сертификат в списке сертификатов для обеих областей, о которых я упоминал. На самом деле, когда я запускаю следующий Powershell скрипт:

cls 
Set-Location Cert:\LocalMachine 
dir -Recurse | where {$_.Thumbprint -ne $null -and $_.Thumbprint.ToLower() -eq "‎‎thumbprint omitted"} 

Он находит два места на CERT, с Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\My быть один из них.

Так что мне непонятно, почему консольное приложение C# не перечисляет этот сертификат в коллекции Certificates.

Возможно, я только что пропустил что-то очевидное, но любая помощь будет оценена по достоинству.

ответ

0

Urgh :(

Оказывается, я скопировал отпечаток из диалогового окна свойств CERT, что означало, что было „ в начале строки, которую я не мог видеть на начальном этапе. После удаления этого сегмента с фронта отпечатка, мой код нашел сертификат без заминки.

Смежные вопросы