Как читать сертификаты из моего хранилища сертификатов?

Я хочу установить сертификат на машину, если он еще не установлен. Я попытался проверить, содержит ли магазин сертификат, но почему-то мой магазин всегда пуст. Я проверил "власти промежуточными папку сертификации" и нашли 18 сертификаты есть. Так почему же этот код пишет 0?

X509Store store = new X509Store(StoreName.CertificateAuthority, StoreLocation.LocalMachine);
Console.WriteLine(store.Certificates.Count);

Я также попробовал StoreLocation.Текущий пользователь. Что я делаю не так?

2 ответов


нужно позвонить store.Open(OpenFlags.ReadWrite); прежде чем вы сможете получить доступ к сертификатам.


одним из возможных объяснений может быть то, что процесс, который запускает этот код, может не иметь разрешений для этого конкретного хранилища.

хранилище сертификатов-это просто оболочка вокруг специальной части файловой системы, и все сертификаты-это просто файлы. Все они имеют списки управления доступом (ACLs), поэтому, если у вас нет правильных разрешений, вы не можете их видеть.

вы можете легко проверить, если это ваша проблема, запустив код с прав администратора (быть однако известно о UAC).