动机:
我希望能够从本地计算机上的 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 中运行。
关于c# - 如何成功注册 certadm.dll 以便能够在 C# 代码中使用 ICertView2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7512610/