如何在c#中列出所有带有oid的Microsoft CA证书模板

时间:2018-05-10 17:15:07

标签: c# certificate

我正在尝试检索Microsoft CA中的所有可注册证书模板。我可以使用powershell命令" Get-CATemplate"来完成它。我想在不使用powershell命令的情况下在c#中执行此操作

1 个答案:

答案 0 :(得分:0)

可以使用ICertRequest2 COM界面来检索Microsoft CA中所有可注册证书模板的列表。此界面中有一种GetCAProperty方法。

您将必须添加对CertCli COM库的引用。

enter image description here

然后使用实现CCertRequest接口的ICertRequest类。该方法以以下格式返回字符串值:TemplateName1\nTemplateOID1\nTemplateName2\nTemplateOID2\....您可以使用\ n分割此字符串。在下面的示例中,我仅选择模板名称。

    private const int CR_PROP_TEMPLATES = 0x0000001D;
    private const int PROPTYPE_STRING = 0x00000004;
    public void GetTemplates(string CAServer)
    {
        try
        {
            var objCertRequest = new CCertRequest();
            Regex regex = new Regex(@"([A-Za-z]+)");
            string templateString = objCertRequest.GetCAProperty(CAServer, CR_PROP_TEMPLATES, 0, PROPTYPE_STRING, 0);
            string[] templates = Regex.Split(templateString, @"\n");

        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.Message);
        }

    }

有关GetCAProperty Click Here

的更多详细信息