2013-10-04 30 views
1

我试图删除存储证书,并使用此功能:删除证书不起作用

public static void RemoveFromStorage(StoreName storeName, IEnumerable<CertInfo> certificates) 
    { 
     var store = new X509Store(storeName, StoreLocation.CurrentUser); 
     store.Open(OpenFlags.MaxAllowed | OpenFlags.IncludeArchived); 

     foreach (var cert in certificates) 
     { 
      var toRemove = store.Certificates.Find(X509FindType.FindByThumbprint, cert.Thumbprint, false); 
      store.Certificates.Remove(toRemove[0]); 
     } 

     store.Close(); 
    } 

功能不抛出任何异常,查找函数返回存储适当的证书,但调用后删除功能它不会被删除。 我在做什么错?

回答

0

问题是这条线

store.Certificates.Remove(toRemove[0]); 

正确的是:

store.Remove(toRemove[0]); 
0

需要为ReadWrite打开存储。

试试这个:

public static void RemoveFromStorage(StoreName storeName, IEnumerable<CertInfo> certificates) 
{ 
    var store = new X509Store(storeName, StoreLocation.CurrentUser); 
    store.Open(OpenFlags.MaxAllowed | OpenFlags.IncludeArchived | OpenFlags.ReadWrite); 

    foreach (var cert in certificates) 
    { 
     var toRemove = store.Certificates.Find(X509FindType.FindByThumbprint, cert.Thumbprint, false); 
     store.Certificates.Remove(toRemove[0]); 
    } 

    store.Close(); 
} 
+0

我想这也是,但遗憾的是它不工作。 – Ligabb