我正在尝试检索Microsoft CA中的所有可注册证书模板。我可以使用powershell命令" Get-CATemplate"来完成它。我想在不使用powershell命令的情况下在c#中执行此操作
答案 0 :(得分:0)
可以使用ICertRequest2
COM界面来检索Microsoft CA中所有可注册证书模板的列表。此界面中有一种GetCAProperty
方法。
您将必须添加对CertCli
COM库的引用。
然后使用实现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