2010-01-04 14 views
7

Quiero instalar un certificado en una máquina si aún no lo tiene instalado. Traté de verificar si la tienda contiene el certificado, pero de alguna manera mi tienda siempre está vacía. Revisé la carpeta "Autoridades de certificación intermedias" y encontré 18 certificados allí. Entonces, ¿por qué este código escribe 0?¿Cómo leer certificados de mi tienda de certificados?

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

También probé StoreLocation.CurrentUser. ¿Qué estoy haciendo mal?

Respuesta

8

Tienes que llamar al store.Open(OpenFlags.ReadWrite); antes de poder acceder a los certificados.

0

Una posible explicación puede ser que el proceso que ejecuta este código puede no tener permisos para esa tienda en particular.

La tienda de certificados es en realidad un envoltorio alrededor de una parte especial del sistema de archivos, y todos los certs son realmente solo archivos. Todos tienen listas de control de acceso (ACL), por lo que si no tienes los permisos adecuados, no puedes verlos.

Puede verificar fácilmente si este es su problema ejecutando el código con privilegios de administrador (sin embargo, tenga en cuenta el UAC).