2012-03-15 2 views
6

Использование опции -ss инструмента Microsoft MakeCert.exe (-ss указывает имя хранилища сертификата предмета, в котором хранится выходной сертификат), я создаю собственное хранилище на сервере. Я могу удалить свой сертификат программно, но я не смогу удалить сам магазин. Согласно сообщению об ошибке, это не поддерживается провайдером.Как удалить сертификат Магазин добавлен makecert

Я даже не могу использовать snapin MMC (certmgr.msc), чтобы удалить его. Кто-нибудь знает, как это сделать?

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 

Единственный способ, которым я нашел, чтобы использовать CertUnregisterSystemStore Win32 API

+0

Вы не написали ни одного комментария к [мой ответ] (http://stackoverflow.com/a/9749076/315935). Проблема уже решена? – Oleg

+0

Извините, я просто не трачу времени, чтобы проверить его. Я сделаю это и ответю. – JPBlanc

ответ

4

Read this и дополнения типа с C# код с PInvoke (уже сделано!) Из crypt32.dll

+0

Спасибо @Christian, я нашел этот, я написал о CertUnregisterSystemStore в своем последнем предложении. – JPBlanc

+0

@JPBlanc. Да, я прочитал последнее предложение, но ссылка на msdn не имеет pinvoke, сделанного со всеми значениями флагов! Меньше работы, больше времени! :-) –

+0

Обратите внимание, что в LinqPad вам нужно либо импортировать '' System.Runtime.InteropServices', либо полностью указать DllImport, например. '' [System.Runtime.InteropServices.DllImport ("crypt32.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode)] '' – Nathan

0

Пробовали ли вы менеджер инструмент сертификата? http://msdn.microsoft.com/en-us/library/e78byta0%28VS.80%29.aspx (см certmgr.exe/дел)

+0

Спасибо, я могу удалить сертификат пользователя с помощью этого инструмента, но не компьютерного магазина. – JPBlanc

+2

Ваш вопрос также отмечен «PowerShell». Возможно, это может вам помочь: http://dmitrysotnikov.wordpress.com/category/certificate-management/ (см. Remove-QADLocalCertificateStore) –

+1

@DavidBrabant Ваш последний комментарий - это ответ! –

7

Я случайно создал магазин под названием Личный и хотел избавиться от него (конечно). Два личных магазина, чтобы искать ughhh. В любом случае, я добавил сертификат, который я создал в этом хранилище, скопировал отпечаток (и удалил пробелы), а затем обыскал реестр для отпечатка пальца. Я обнаружил, что могу убрать их, удалив ключ (в моем случае «Личный») в [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ SystemCertificates \ Personal] (если на локальном компьютере) или в [HKEY_CURRENT_USER \ Software \ Microsoft \ SystemCertificates \ Personal] находится у текущего пользователя. Я знал, что это не тот, кто называется «Личный», потому что настоящий личный магазин фактически хранится как «Мой».

EDIT: Мне пришлось удалить несколько других ключей, чтобы решить эту проблему, но в основном тщательно изучить и изучить каждую запись, которая соответствует тому, что вы пытаетесь избавиться. Для каждого матча экспортируйте в рег-файл, а затем удалите и протестируйте.

Это сообщение было немного полезно, а также: http://banachowski.com/deprogramming/2011/01/deleting-unwanted-certificate-stores-from-windows/

3

Используйте PowerShell команду:

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

Опубликованный код уже относится к 'Remove-Item' – stuartd

+0

Это то, что я пробовал ans тема вопроса! – JPBlanc

Смежные вопросы