Поделиться через


Метод ICertAdmin::SetRequestAttributes (certadm.h)

Метод SetRequestAttributes задает атрибуты в указанном ожидающих запросе сертификата. Этот метод был впервые определен в интерфейсе ICertAdmin .

Для успешного выполнения этого метода запрос сертификата должен находиться в ожидании.

Синтаксис

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

Параметры

[in] strConfig

Представляет допустимую строку конфигурации для сервера центра сертификации (ЦС) в формате COMPUTERNAME\CANAME, где COMPUTERNAME — сетевое имя сервера служб сертификатов, а CANAME — общее имя центра сертификации, указанное при настройке служб сертификации. Дополнительные сведения об имени строки конфигурации см. в разделе ICertConfig.

Важно!SetRequestAttributes не очищает внутренний кэш при изменении строки конфигурации. При изменении строки конфигурации для ЦС необходимо создать экземпляр нового объекта ICertAdmin и снова вызвать этот метод с новой строкой конфигурации.
 

[in] RequestId

Указывает идентификатор запроса, получающего атрибуты.

[in] strAttributes

Указывает данные атрибута. Каждый атрибут представляет собой пару строк имя-значение. Символ двоеточия разделяет имя и значение, а символ новой строки разделяет несколько пар "имя-значение", например:

C++ AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2
VB AttributeName1:AttributeValue1 & vbNewLine & AttributeName2:AttributeValue2
Количество атрибутов запроса, которые могут быть добавлены в запрос, не ограничено.

При анализе имен атрибутов службы сертификатов игнорируют пробелы, дефисы (знаки минуса) и регистр. Например, AttributeName1, Attribute Name1 и Attribute-name1 являются эквивалентными. Для значений атрибутов службы сертификатов игнорируют пробелы в начале и конце.

Примечание Максимальная длина имени атрибута составляет 127 символов, отличных от NULL . Максимальная длина значения атрибута составляет 4096 символов, отличных от 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
Header certadm.h (включая Certsrv.h)
Библиотека Certidl.lib
DLL Certadm.dll

См. также раздел

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig

IEnumCERTVIEWATTRIBUTE