2011-09-22 69 views
1

动机使用ICertView2:
HOWTO为了成功注册certadm.dll能在C#代码

  • 我希望能够在本地机器从Windows CA检索和查看证书。我不想访问本机的浏览器密钥库,而是访问Windows CA(Windows Certifcate Authority(服务))。

  • 我想在C#代码中做到这一点。

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

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

我想我能够使用这条线和ICertView2结构,我达到了我的目标。 如果在Visual Studio中将此行写入我的C#代码中,它对我说,它不知道ICertView2和CERTADMINLib。 因此,如果再次搜索Web,发现我需要导入参考。我需要COM库certadmin.dll,幸运的是存在于我的C:\ Windows \ System32文件夹中。
所以我试着在Solutionexplorer-> Project-> References-> Add Reference-> COM上添加Reference。但它没有在那里列出,只有一个看起来类似的库称为“CertCli 1.0类型库”。我加了这一点,也能够键入

using CERTCLIENTLib; 

但unfortuneatly,所需要的“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中提供适当的参考?

如果我忘记了更多信息,请让我知道,所以我可以添加它们。

+0

你有没有想出解决办法? – Tony

+0

那么什么是新的等效于ICertView2,什么是在MS#上使用MS CA的最佳做法? –

回答

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

+0

+1非常适合我! – Seph