Список всех системных хранилищ сертификатов

Я ищу способ получить все хранилища системных сертификатов в любом местоположение (CurrentUser или LocalMachine).

Перечисление StoreLocation явно не будет включать определяемые пользователем хранилища сертификатов, созданные с помощью X509Store(String) или X509Store(String, StoreLocation). Также это не определяет другие стандартные хранилища, такие как SPC или Request.

Я просмотрел crypto32.dll API и не нашел там ничего подходящего, кроме регистрации/отмены регистрации.

Хранилища, не основанные на файловой системе, появляются в реестре (например, HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates\Root). поставщик сертификатов PowerShell может опрашивать хранилища. Это - запрос реестра - что он делает под капотом? Будет ли такое собранное вручную решение переносимым между XP/Vista/7/8?


person Martin Carpenter    schedule 28.09.2011    source источник


Ответы (1)


Ну, наш продукт SecureBlackbox делает то, что вам нужно через CryptoAPI, а именно CertEnumSystemStore() функция. Хотя у него много параметров.

person Eugene Mayevski 'Callback    schedule 28.09.2011
comment
Отлично, спасибо! (Думаю, я пропустил это в других 475 методах/свойствах cryptoAPI). Теперь мне просто нужно разобраться с неуправляемым миром из C#... - person Martin Carpenter; 28.09.2011
comment
@Martin проверьте pinvoke.net . Хотя он не содержит CertEnumSystemStore (я проверял), он содержит аналогичные функции, которые помогут вам начать работу. - person Eugene Mayevski 'Callback; 28.09.2011