如何成功注册certadm.dll以便能够在C#Code中使用ICertView2

时间:2011-09-22 09:34:05

标签: c# .net com certificate certificate-authority

动机

  • 我希望能够从本地计算机上的Windows CA检索和查看证书。我不想访问本机的Browser-Keystores,而是访问Windows CA(Windows Certifcate Authority(服务))。

  • 我想在C#-Code中执行此操作。

到目前为止我的调查
我发现了几个使用以下行的示例:

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

我想我能够使用这一行和ICertView2结构,我达到了我的目标。 如果在Visual Studio中将此行写入我的C#-Code,它告诉我,它不知道ICertView2和CERTADMINLib。 因此,如果再次搜索Web并发现我需要导入一个Reference。我需要COM库certadmin.dll,幸运的是存在于我的C:\ Windows \ System32文件夹中 所以我尝试在Solutionexplorer-> Project-> References-> Add Reference-> COM上添加Reference。但它没有在那里列出,只有一个类似的库名为“ CertCli 1.0 Type Library ”。我添加了这个并且还能够输入

using CERTCLIENTLib;

但不幸的是,所需的“ ICertView2 ”类不存在。 如果我输入

    using CERTADMINLib;

应该输入以便能够使用ICertView2,Visual Studio对我说,它也不知道“ CERTADMINLib ”。

此外,我在网上发现提示,需要事先注册certadm.dll,以便在Visual Studio中使用它。我尝试注册dll-File,但它不起作用。

如果我调用以下命令:

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

并获得一个Dialogbox告诉我以下内容:
'加载模块时出错“C:\ Windows \ System32 \ certadm.dll”。 ...找不到指定的模块。'

certadm.dll版本ist“ 5.2.3790.3959 ”。 我正在使用“Windows 7 Enterpise SP1”。

你能告诉我,我如何注册并在Visual Studio中提供适当的参考资料?

如果我忘记了更多信息,请告诉我,我可以添加它们。

1 个答案:

答案 0 :(得分:4)

微软从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