Ich habe ein unten aufgeführtes C# .Net-Konsolenprogramm erstellt, um alle Zertifikatspeicher zu durchsuchen und Zertifikatsinformationen anzuzeigen. Das Problem ist, dass nicht alle Zertifikate angezeigt werden.Scannen von Zertifikatsspeichern zeigt nicht alle Zertifikate
Zum Beispiel dieser Befehlszeile zeigt Zertifikate im persönlichen Store:
CERTUTIL.EXE -store My
aber mein Testprogramm zeigt es wie keine persönlichen Zertifikate haben. Ich benutze Windows 2008 R2. Hier ist die abgekürzte Konsolen-App. Irgendeine Idee, was ich falsch machen könnte? Ich habe sowohl in einem regulären CMD-Fenster als auch als Administrator mit denselben Ergebnissen versucht.
using System;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Collections;
namespace CertView
{
class Program
{
static int Main(string[] args)
{
var stores = Enum.GetValues(typeof(StoreName));
IEnumerator enumStores = stores.GetEnumerator();
foreach (StoreName sn in stores)
{
X509Store str = new X509Store(sn.ToString());
str.Open(OpenFlags.ReadOnly);
int count = str.Certificates.Count;
if (count > 0)
{
Console.WriteLine("Store: " + sn.ToString() + Environment.NewLine);
foreach (X509Certificate2 x509 in str.Certificates)
{
Console.WriteLine("Friendly name: {0}", x509.FriendlyName);
Console.WriteLine("Issued to: " + x509.GetNameInfo(X509NameType.SimpleName, false));
Console.WriteLine("Issued by: " + x509.GetNameInfo(X509NameType.SimpleName, true));
Console.WriteLine("Thumbprint: " + x509.Thumbprint);
x509.Reset();
}
}
str.Close();
}
}
}
}
Brilliant. Vielen Dank! –
@NeilWeicher Um CurrentUser \ Meine Zertifikate mit certutil aufzulisten, führen Sie den Befehl 'certutil -user- store my' – pepo
Danke. Wie spezifizieren Sie explizit LocalMachine, oder ist das nur der Standard? Ich habe versucht -LocalMachine, -System und ein paar andere. –