puede probar con el X509Store
y releated clases de .NET Framework para eliminar un certificado del almacén de certificados. El ejemplo de código borra un certificado del actual del usuario Mi tienda:
// 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();
COMENZAR EDIT: Sobre la base de los comentarios en la sección de comentarios que he actualizado mi respuesta con un ejemplo de código que muestra cómo eliminar una certificado y todos los certificados de la cadena:
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);
FIN EDITAR
esperanza, esto ayuda.
va a hacer seguro de que eliminará todos los certificados de la máquina incluyendo thoese en cadena? – daehaai
bien, aquí hay otra pregunta adicional. Cuando instala utilizando el asistente, tiene la opción "Almacenar automáticamente el certificado según el tipo". ¿Cómo instalaría cert en la tienda corrosponding en el código con esto? – daehaai
@activebiz: No, la función Remove() no elimina los certificados en la cadena de certificados. He actualizado mi respuesta con una muestra para mostrar cómo eliminar los certificados en la cadena. – Hans