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

标签 c# .net com certificate certificate-authority

动机:

  • 我希望能够从本地计算机上的 Windows CA 检索和查看证书。我不想访问计算机的浏览器 keystore ,而是访问 Windows CA(Windows 证书颁发机构(服务))。

  • 我想在 C# 代码中执行此操作。

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

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

我认为我能够使用这条线和 ICertView2 结构,我达到了我的目标。 如果将此行写入 Visual Studio 中的 C# 代码,它会告诉我,它不知道 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 的版本为“5.2.3790.3959”。 我正在使用“Windows 7 Enterprise SP1”。

您能告诉我,如何注册并进一步在 Visual Studio 中提供适当的引用吗?

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

最佳答案

从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

关于c# - 如何成功注册 certadm.dll 以便能够在 C# 代码中使用 ICertView2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7512610/

相关文章:

c# - 快速正则表达式问题

c# - 如何在 MVVM (.NET MAUI) 中为自定义控件提供命令属性

com - 哪些 AT 命令有助于获取 SIM 卡数据?

c++ - 连接两个 BSTR 的最佳方法是什么?

c++ - 自定义预览面板 - 适用于 Windows 7,不适用于 Vista

c# - 是C#编译器还是CLR禁止多重继承

c# - 当我们使用 JSON.Net 序列化可序列化对象时,JSON 字符串与 DatacontractJSON 序列化器不同

c# - 如何判断 linq to sql 对象是新的、修改的还是未更改的?

c# - 如何在 ASP.NET Core 2.1 应用程序中注册 Typed HttpClient

c# - 详细的 View 状态大小