Как успешно зарегистрировать certadm.dll, чтобы иметь возможность использовать ICertView2 в C # Code - PullRequest
2 голосов
/ 22 сентября 2011

Мотивация

  • Я хочу получать и просматривать сертификаты из Windows CA на локальном компьютере. Я не хочу получать доступ к броузер-ключам машины, но Windows CA (Центр сертификации Windows (служба)).

  • Я хочу сделать это в C # -Code.

Мое расследование до сих пор :
Я нашел несколько примеров, которые используют следующую строку:

ICertView2 certView = new CERTADMINLib.CCertView();
...

Я думаю, что могу использовать эту строку и структуру ICertView2, я достиг своей цели. Если записать эту строку в мой C # -код в Visual Studio, это говорит мне, что она не знает ICertView2 и CERTADMINLib. Так что, если поиск в Интернете снова и выяснил, мне нужно импортировать ссылку. Мне нужна библиотека COM certadmin.dll, которая, к счастью, существует в моей папке C: \ Windows \ System32.
Поэтому я попытался добавить ссылку на Solutionexplorer-> Project-> References-> Add Reference-> COM. Но он там не указан, только похожая библиотека называется " CertCli 1.0 Type Library ". Я добавил это, а также смог набрать

using CERTCLIENTLib;

но, к сожалению, необходимого класса " ICertView2 " там нет. Если я наберу

    using CERTADMINLib;

, который должен быть напечатан, чтобы иметь возможность использовать ICertView2, Visual Studio говорит мне, что он также не знает " CERTADMINLib ".

Далее я обнаружил подсказки в сети, что нужно заранее зарегистрировать certadm.dll, чтобы сделать его доступным в Visual Studio. Я пытался зарегистрировать dll-файл, но он не работает.

Если я вызову следующую команду:

C:\Windows\System32>regsvr32.exe C:\Windows\System32\certadm.dll

и получите диалоговое окно, сообщающее мне следующее:
'Ошибка при загрузке модуля "C: \ Windows \ System32 \ certadm.dll". ... Указанный модуль не найден. '

Версия certadm.dll ist " 5.2.3790.3959 ". Я использую "Windows 7 Enterpise SP1".

Можете ли вы сказать мне, как я могу зарегистрироваться и сделать соответствующую ссылку доступной в Visual Studio?

Если я забыл дополнительную информацию, пожалуйста, дайте мне знать, чтобы я мог добавить их.

1 Ответ

4 голосов
/ 21 августа 2012

Microsoft сильно изменилась с XP на Win7.Чтобы иметь возможность ссылаться на него, вам потребуется tlbimp certadm.dll.Tlbimp.exe можно найти в вашем .NET SDK и тому подобное.Затем вам нужно будет импортировать эту библиотеку в ваше решение .NET.Хотя я должен предупредить вас, мне так и не удалось заставить работать какой-либо код в Win7, работающий в XP.

Вы также можете посмотреть по этой ссылке: http://blogs.msdn.com/b/alejacma/archive/2012/04/04/how-to-get-info-from-client-certificates-issued-by-a-ca-c-vs-2010.aspx

...