iCertAdmin::SetRequestAttributes 方法 (certadm.h)

SetRequestAttributes 方法设置指定的挂起证书请求中的属性。 此方法首先在 ICertAdmin 接口中定义。

要使此方法成功,证书请求必须处于挂起状态。

语法

HRESULT SetRequestAttributes(
  [in] const BSTR strConfig,
  [in] LONG       RequestId,
  [in] const BSTR strAttributes
);

参数

[in] strConfig

表示 证书颁发机构 (CA) 服务器的有效配置字符串,格式为 COMPUTERNAME\CANAME,其中 COMPUTERNAME 是证书服务服务器的网络名称,CANAME 是证书颁发机构的公用名,如证书服务设置过程中输入的那样。 有关配置字符串名称的信息,请参阅 ICertConfig

重要提示:更改配置字符串时,SetRequestAttributes 不会清除内部缓存。 更改 CA 的配置字符串时,必须实例化新的 ICertAdmin 对象,并使用新的配置字符串再次调用此方法。
 

[in] RequestId

指定接收 属性的请求的 ID。

[in] strAttributes

指定属性数据。 每个属性都是一个名称/值字符串对。 冒号字符分隔名称和值,换行符分隔多个名称/值对,例如:

C++ AttributeName1AttributeValue1\nAttributeName2AttributeValue2
VB AttributeName1AttributeValue1 & vbNewLine & AttributeName2AttributeValue2
可以添加到请求的请求属性的数量没有设置限制。

当证书服务分析属性名称时,它会忽略空格、连字符 (减号) 和大小写。 例如, AttributeName1Attribute Name1Attribute-name1 都是等效的。 对于属性值,证书服务会忽略前导空格和尾随空格。

注意 属性名称的最大长度为 127 个非 NULL 字符。 属性值的最大长度为 4,096 个非 NULL 字符。
 

返回值

VB

如果该方法成功,该方法将返回S_OK。

如果方法失败,它将返回指示错误的 HRESULT 值。 有关常见错误代码的列表,请参阅 常见 HRESULT 值

注解

通过调用 SetRequestAttributes添加或更新的属性不会更改与证书请求关联的初始未分析属性字符串。 在 (ICertRequest::Submit 方法请求证书后,证书请求的未分析属性字符串不可更改,允许在请求证书时) 指定属性。

可以使用证书颁发机构 MMC 管理单元显示初始未分析的请求属性字符串。

查看分析的属性时,还会看到由于调用 SetRequestAttributes 而发生的任何更改。

查看分析的属性

  1. 打开证书颁发机构 MMC 管理单元。
  2. 打开 “挂起的请求” 文件夹。
  3. 右键单击请求,指向“ 所有任务”,然后单击“ 查看属性/扩展”。
若要枚举或查看所有已分析的属性,包括通过 SetRequestAttributes 添加的属性,还可以使用 IEnumCERTVIEWATTRIBUTE 接口。

管理任务使用 DCOM。 调用早期版本的 Certadm.h 中定义的此接口方法的代码将在基于 Windows 的服务器上运行,前提是客户端和服务器都运行相同的 Windows 操作系统。

示例

    BSTR bstrAttribs = NULL;
    BSTR bstrCA = NULL;
    long nReqID;  // request ID

    //  Specify the attributes.
    //  For example, "AttName1:AttValue1\nAttName2:AttValue2". 
    bstrAttribs = SysAllocString(L"<ATTRIBUTESHERE>");
    if (NULL == bstrAttribs)
    {
        printf("Memory allocation failed for bstrAttribs.\n");
        goto error;
    }
    
    bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
    if (NULL == bstrCA)
    {
        printf("Memory allocation failed for bstrCA.\n");
        goto error;
    }

    //  Request ID to receive the attributes.
    nReqID = <REQUESTIDHERE>;

    //  Add these attributes to the certificate.
    //  pCertAdmin is a previously instantiated
    //  ICertAdmin object pointer. 
    hr = pCertAdmin->SetRequestAttributes( bstrCA,
                                           nReqID,
                                           bstrAttribs );
    if (FAILED(hr))
        printf("Failed SetRequestAttributes [%x]\n", hr);
    else
        printf("SetRequestAttributes succeeded\n");

    //  Done processing.

error:

    if (bstrAttribs)
        SysFreeString(bstrAttribs);
    if (bstrCA)
        SysFreeString(bstrCA);
    //  Free other resources.

要求

要求
最低受支持的客户端 无受支持的版本
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 certadm.h (包括 Certsrv.h)
Library Certidl.lib
DLL Certadm.dll

另请参阅

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig

IEnumCERTVIEWATTRIBUTE