Вы можете попробовать X509Store
и освобожденные классы в .Net Framework, чтобы удалить сертификат из хранилища сертификатов. В следующем примере кода удаляется сертификат из Моего магазина текущего пользователя:
// 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();
НАЧАТЬ РЕДАКТИРОВАТЬ:
На основании комментариев в разделе комментариев я обновил свой ответ с примером кода, показывающим, как удалить сертификат и все сертификаты в цепочке:
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);
КОНЕЦ РЕДАКТИРОВАНИЯ
Надеюсь, это поможет.