2013-10-04 31 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