2010-01-04 25 views
7

Ich möchte ein Zertifikat auf einem Computer installieren, wenn es nicht bereits installiert ist. Ich habe versucht zu prüfen, ob der Laden das Zertifikat enthält, aber irgendwie ist mein Laden immer leer. Ich habe den Ordner "Intermediate Certification Authorities" überprüft und dort 18 Zertifikate gefunden. Also warum schreibt dieser Code 0?Wie lese ich Zertifikate aus meinem Zertifikatspeicher?

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

Ich habe auch StoreLocation.CurrentUser versucht. Was mache ich falsch?

Antwort

8

Sie müssen store.Open(OpenFlags.ReadWrite); anrufen, bevor Sie auf die Zertifikate zugreifen können.

0

Eine mögliche Erklärung könnte sein, dass der Prozess, der diesen Code ausführt, möglicherweise keine Berechtigungen für diesen bestimmten Speicher hat.

Der Cert-Speicher ist wirklich nur ein Wrapper um einen speziellen Teil des Dateisystems, und alle Zertifikate sind wirklich nur Dateien. Sie haben alle Zugriffssteuerungslisten (Access Control Lists, ACLs). Wenn Sie nicht über die richtigen Berechtigungen verfügen, können Sie sie nicht sehen.

Sie können leicht überprüfen, ob dies Ihr Problem ist, indem Sie den Code mit Administrator priviliges ausführen (beachten Sie jedoch die UAC).

Verwandte Themen