IX509CertificateTemplateWritable::Commit 方法 (certenroll.h)

Commit 方法从 中删除模板或将其保存到 Active Directory。

语法

HRESULT Commit(
  [in] CommitTemplateFlags commitFlags,
  [in] BSTR                strServerContext
);

参数

[in] commitFlags

一个 CommitTemplateFlags 枚举值,该值指定如何保存或删除模板。 这必须是以下值之一。

含义
CommitFlagSaveTemplateGenerateOID
保存模板并为其创建对象标识符。
CommitFlagSaveTemplateUseCurrentOID
未使用。
CommitFlagSaveTemplateOverwrite
未使用。
CommitFlagDeleteTemplate
删除模板。

[in] strServerContext

一个 BSTR 变量,其中包含将向其应用更改的 Active Directory 服务器的 DNS 名称。 如果此值为 NULL,则更改将应用于默认域控制器。

返回值

如果函数成功,该函数将返回 S_OK

如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括(但并不限于)下表中的项。 有关常见错误代码的列表,请参阅 常见 HRESULT 值

返回代码 说明
CRYPT_E_EXISTS
CommitFlagSaveTemplateGenerateOID 已在 commitFlags 参数中指定,但已存在具有匹配公用名或匹配对象标识符的模板 (OID) 。
CRYPT_E_NOT_FOUND
CommitFlagDelete 已在 commitFlags 参数中指定,并且找到了具有相同公用名的模板,但 OID 不匹配。
E_ACCESSDEINED
调用方没有保存或删除模板的相应权限。 调用方必须对 Active Directory 中的模板容器和模板对象具有写入和删除权限。 如果调用方对模板容器和对象具有删除权限,但对 OID 容器和对象没有删除权限,则模板将被删除,但 OID 不会删除。
E_NOTIMPL
CommitFlagSaveTemplateUseCurrentOIDCommitFlagSaveTemplateOverwrite 已在 commitFlags 参数中指定。 当前未使用这些值。
HRESULT_FROM_WIN32 (ERROR_NOT_FOUND)
commitFlagDelete 已在 commitFlags 参数中指定,但找不到具有匹配公用名 (CN) 的模板。
HRESULT_FROM_WIN32 (ERROR_NOT_SUPPORTED)
默认模板不支持 Commit 方法。
OLE_E_BLANK
IX509CertificateTemplateWritable 对象尚未初始化。

注解

commitFlags 参数中指定 CommitFlagSaveTemplateGenerateOID 时,除非已创建模板和 OID 容器,否则此方法不会成功。 可以通过以下任一方式创建这些容器:

  • 在服务器上安装企业证书颁发机构。
  • 启动 Certtmpl.msc 管理单元。
  • 使用 Certutil.exe -installDefaultTemplates 命令安装默认模板。

要求

要求
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 certenroll.h

另请参阅

IX509CertificateTemplateWritable