2011-10-03 22 views
12

Sertifika deposuna sertifikası certmgr.msc'de (Sağ tıklama yükle) kullanarak sihirbaz kullanarak yükleyebilirsiniz? Herhangi bir sihirbaz/kod (pref.)/Script kullanarak tüm sertifikayı "temiz" nasıl kaldıracağını bilen var mı?Sertifikadan Mağazadan temizleme nasıl kaldırılır

Herhangi bir kalıntı bırakmadan LocalMachine ve/veya CurrentUser Store'dan her şeyi (daha önce yüklediğim) kaldırabilmek istiyorum.

Teşekkürler

cevap

12

Sertifika deposundan bir sertifikayı silmek Net Framework içinde X509Store ve releated sınıfları deneyebilirsiniz. Aşağıdaki kod örneği geçerli kullanıcının My deposundan bir sertifika siler:

// 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 DÜZENLEME: Ben bir kod örneği bir kaldırma gösteren cevabım güncelledik yorum bölümündeki yorumları dayanarak sertifika ve zincirdeki bütün sertifikaları:

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); 

SON DÜZENLEME

Umut, bu yardımcı olur.

+1

o zincirdeki thoese dahil makineden tüm sertifikaları kaldıracaktır emin olur musun? – daehaai

+0

tamam, buna ek olarak başka bir soru. Sihirbaz kullanarak yüklediğinizde, "Sertifika türüne göre otomatik olarak depola" seçeneğine sahiptir. Bu şekilde kodda corrosponding deposuna nasıl sertifika yüklersiniz? – daehaai

+0

@activebiz: Hayır, Remove() işlevi sertifika zincirindeki sertifikaları kaldırmaz. Zincirdeki sertifikaların nasıl silineceğini göstermek için cevabımı örnekle güncelledim. – Hans

1

certmgr.exe dosyasını deneyebilirsiniz. Aşağıdaki komut, yerel kullanıcı kişisel \ sertifika deposundan 'ortak kullanıcı adı' olan bir sertifikayı kaldırır.

.\certmgr.exe -del -n commoncertname -c -s -r currentuser my 

Burada certmgr.exe hakkında daha fazla bilgi bulabilirsiniz: http://msdn.microsoft.com/en-us/library/windows/desktop/aa376553%28v=vs.85%29.aspx

GÜNCELLEME

Duh! Bunu denemediğime inanamıyorum! Aşağıdaki ile sertifikalarını kaldırabilirsiniz:

Get-ChildItem Cert:\CurrentUser\My | Where-Object {$_.Subject -eq 'CN=certCN'} | Remove-Item 
4

Eski iş parçacığı, ancak Win 7'yi kullanarak bağlı olan bağlantıyı takip ettim ve güzel çalıştı ... Yönetim Konsolu'nu kullanır.

  1. Başlat -> Çalıştır -> mmc.exe
  2. tıklayın Dosya ->
  3. Seç "Bilgisayar hesabı" Add tıklayın
  4. Seç Sertifikalar "Eklenti Ekle/Kaldır" İleri'yi tıklayın.
  5. "Yerel bilgisayarı" seçin Sertifikalar (yerel bilgisayar) Sol bölmede, MMC
  6. geri getirmek genişletmek gerektiğini Finish
  7. tıklayın OK tıklayın
  8. listelenen sertifika Ne yapacağını yap. ..

Kaynak: http://windowssecrets.com/top-story/certificate-cleanup-for-most-personal-computers/

+2

Bu bağlantı soruyu yanıtlayabilirken, cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak daha iyidir. Bağlantılı sayfa değiştiğinde yalnızca bağlantı yanıtları geçersiz olabilir. –