2011-09-22 19 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