si potrebbe provare le X509Store
e releated classi del Framework .Net per eliminare un certificato dall'archivio certificati. Nell'esempio di codice seguente elimina un certificato dell'utente corrente Il mio negozio:
// Use other store locations if your certificate is not in the current user store.
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite | OpenFlags.IncludeArchived);
// You could also use a more specific find type such as X509FindType.FindByThumbprint
X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySubjectName, "yoursubjectname", false);
foreach (var cert in col)
{
Console.Out.WriteLine(cert.SubjectName.Name);
// Remove the certificate
store.Remove(cert);
}
store.Close();
BEGIN EDIT: Sulla base dei commenti nella sezione di commento Ho aggiornato la mia risposta con un esempio di codice che mostra come rimuovere un certificato e tutti i certificati della catena:
X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySubjectName, "yoursubjectname", false);
X509Chain ch = new X509Chain();
ch.Build(col[0]);
X509Certificate2Collection allCertsInChain = new X509Certificate2Collection();
foreach (X509ChainElement el in ch.ChainElements)
{
allCertsInChain.Add(el.Certificate);
}
store.RemoveRange(allCertsInChain);
FINE EDIT
Speranza, questo aiuta.
Intende assicurarsi che rimuoverà tutti i certificati dalla macchina tra cui thoese a catena? – daehaai
ok ecco un'altra domanda in più. Quando si installa utilizzando la procedura guidata ha l'opzione "Archivia automaticamente il certificato in base al tipo". Come installereste cert nel negozio di corrosponding nel codice con questo? – daehaai
@activebiz: No, la funzione Remove() non rimuove i certificati nella catena di certificati. Ho aggiornato la mia risposta con un esempio per mostrare come eliminare i certificati nella catena. – Hans