2012-03-15 10 views
6

Utilizzando l'opzione -ss dello strumento Microsoft MakeCert.exe (-ss specifica il nome dell'archivio certificati del soggetto che memorizza il certificato di uscita), creo il mio negozio su un server. Sono in grado di rimuovere il mio certificato in modo programmatico, ma non sono in grado di rimuovere il negozio stesso. Secondo il messaggio di errore questo non sembra essere supportato dal provider.Come rimuovere un certificato Negozio aggiunto da makecert

Non riesco nemmeno a utilizzare lo snap-in MMC (certmgr.msc) per rimuoverlo. Qualcuno sa come farlo?

PS cert:\LocalMachine> Remove-Item .\SigningStore 
Remove-Item : L'exécution du fournisseur s'est arrêtée, car le fournisseur ne prend pas en charge cette opération. 
Au niveau de ligne : 1 Caractère : 12 
+ Remove-Item <<<< .\SigningStore 
    + CategoryInfo   : NotImplemented: (:) [Remove-Item], PSNotSupportedException 
    + FullyQualifiedErrorId : NotSupported,Microsoft.PowerShell.Commands.RemoveItemCommand 

L'unico modo che ho trovato è stato quello di utilizzare CertUnregisterSystemStore API Win32

+0

Hai scritto alcun commento da [la mia risposta] (http://stackoverflow.com/a/9749076/315.935). Il problema è già risolto? – Oleg

+0

Scusa, non mi prendo tempo per testarlo. Lo farò e risponderò. – JPBlanc

risposta

4

this Leggere e add-tipo con il codice C# con PInvoke (già fatto!) Di crypt32.dll

+0

Grazie a @Christian, ho trovato questo, ho scritto su CertUnregisterSystemStore nella mia ultima frase. – JPBlanc

+0

@JPBlanc. Sì, ho letto l'ultima frase, ma il link a msdn non ha il pinvoke fatto con il valore di tutti i flag! Meno lavoro, più tempo a disposizione! :-) –

+0

Si noti che in LinqPad, è necessario importare "System.Runtime.InteropServices'' o specificare completamente DllImport, ad es. '' [System.Runtime.InteropServices.DllImport ("crypt32.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode)] '' – Nathan

0

Hai provato lo strumento di gestione dei certificati? http://msdn.microsoft.com/en-us/library/e78byta0%28VS.80%29.aspx (vedi Certmgr.exe/DEL)

+0

Grazie, sono in grado di rimuovere un certificato utente con questo strumento, ma non un negozio di computer. – JPBlanc

+2

Anche la tua domanda viene contrassegnata con "PowerShell". Forse questo può aiutarti: http://dmitrysotnikov.wordpress.com/category/certificate-management/ (vedi Remove-QADLocalCertificateStore) –

+1

@DavidBrabant Il tuo ultimo commento è una risposta! –

7

ho creato accidentalmente un negozio che si chiama Personal e voluto sbarazzarsi di esso (ovviamente). Due negozi personali per cercare ughhh. Ad ogni modo, ho aggiunto un certificato che avevo creato a quell'archivio, copiato l'identificazione personale (e rimosso gli spazi) e poi cercato il registro per l'identificazione personale. Ho scoperto che potevo farli andare via eliminando la chiave (nel mio caso Personale) in [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ SystemCertificates \ Personal] (se nel computer locale) o in [HKEY_CURRENT_USER \ Software \ Microsoft \ SystemCertificates \ Personal] è nell'attuale utente. Sapevo che non era l'altro chiamato Personal perché il vero negozio personale è in realtà memorizzato come My.

EDIT: Ho dovuto rimuovere alcuni altri tasti per risolvere questo problema, ma fondamentalmente eseguiamo una ricerca accurata ed esaminiamo ogni voce corrispondente a ciò che stai cercando di eliminare. Per ogni partita, esportare in un file reg e quindi eliminare e testare.

Questo post è stato un po 'utile pure: http://banachowski.com/deprogramming/2011/01/deleting-unwanted-certificate-stores-from-windows/

3

Utilizzare un cmdlet PowerShell:

Remove-Item -Path cert:\LocalMachine\StoreYouWantToDelete 
+1

Il codice postato fa già riferimento a 'Remove-Item' – stuartd

+0

Quello che ho provato è l'oggetto della domanda! – JPBlanc

Problemi correlati