Метод ICertConfig::GetConfig (certcli.h)

Метод GetConfig извлекает строку конфигурации для сервера служб сертификатов . Этот метод был впервые определен в интерфейсе ICertConfig .

Строка конфигурации — это имя сервера и имя центра сертификации , разделенные обратной косой чертой (\); Например: Имя_\сервера CAName. Эту строку конфигурации можно использовать для однозначной ссылки на конкретный сервер служб сертификатов. Дополнительные сведения см. в подразделе "Примечания".

Синтаксис

HRESULT GetConfig(
  [in]  LONG Flags,
  [out] BSTR *pstrOut
);

Параметры

[in] Flags

Значение, указывающее используемый центр сертификации. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
CC_DEFAULTCONFIG
0x00000000
Извлекает центр сертификации по умолчанию.
CC_FIRSTCONFIG
0x00000002
Возвращает первый центр сертификации.
CC_LOCALACTIVECONFIG
0x00000004
Извлекает локальный центр сертификации, если он запущен.
CC_LOCALCONFIG
0x00000003
Извлекает локальный центр сертификации.
CC_UIPICKCONFIG
0x00000001
Отображает пользовательский интерфейс, позволяющий пользователю выбрать центр сертификации.
CC_UIPICKCONFIGSKIPLOCALCA
0x00000005
Отображает пользовательский интерфейс, позволяющий пользователю выбрать центр сертификации. Пользовательский интерфейс исключает любой локальный центр сертификации. Это исключение полезно при обновлении сертификата подчиненного центра сертификации, когда запрос на сертификат подчиненного центра сертификации отправляется в центр сертификации, отличный от текущего.

[out] pstrOut

Указатель на BSTR , содержащий конфигурацию. Завершив использование конфигурации, вызовите функцию SysFreeString , чтобы освободить pbstrOut.

Возвращаемое значение

C++

Если метод завершается успешно, метод возвращает S_OK.

Если метод завершается сбоем, он возвращает значение HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

VB

Возвращаемое значение — это строка, содержащая конфигурацию.

Комментарии

Часть имени центра сертификации (ЦС) строки конфигурации, возвращаемой этой функцией, — это точный текст, введенный во время установки служб сертификатов. Обратите внимание, что этот текст может отличаться от формы имени ЦС в именах файлов (например, в списке отзыва сертификатов) или в разделах реестра. Это связано с тем, что имена файлов и разделы реестра используют дезинфицированную версию имени ЦС.

Процесс очистки имени ЦС необходим для удаления символов, которые являются недопустимыми для имен файлов, имен разделов реестра или значений различающегося имени или недопустимыми по причинам, характерным для служб сертификатов. В процессе очистки любой недопустимый символ в общем имени преобразуется в представление из пяти символов в формате !xxxx, где ! используется в качестве escape-символа, а xxxx представляет четыре шестнадцатеричные цифры, которые однозначно идентифицируют преобразуемый символ.

Например, знак номера (#) не допускается в различающихся именах в Active Directory. Если во время установки # введено имя ЦС— YourName, то с помощью дезинтемпированного ЦС будет !0023YourName.

Следующие символы, если они введены для общего имени ЦС во время установки, преобразуются в !Формат xxxx во время процесса очистки. Этот список подлежит изменению.

Имя Знак Значение в формате !xxxx
Амперсанд & !0026
Апостроф ' !0027
Asterisk * !002a
Обратная косая черта \ !005c
Левая фигурная скобка { !007b
Правая фигурная скобка } !007d
Открывающая квадратная скобка [ !005b
Закрывающая квадратная скобка ] !005d
Курсор ^ !005e
Двоеточие : !003a
Запятая , !002c
Знак "равно" = !003d
Восклицательный знак ! !0021
Грайв акцент ` !0060
Знак "Больше" > !003e
Знак "Меньше" < !003c
Знак номера # !0023
Открываемая скобка ( !0028
Закрывающая скобка ) !0029
Процент % !0025
канал | !007c
Знак "плюс" + !002b
Вопросительный знак ? !003f
Знак кавычек " !0022
Точка с запятой ; !003b
Косая черта / !002f
 

Все непечатаемые символы и все символы Юникода, не являющиеся семи битами, также преобразуются в !Формат xxxx.

Санируемое короткое имя создается, если это имя слишком длинное для относительного различающегося имени служб каталога (RDN) из 64 символов. Очищенное короткое имя состоит из усеченного и добавленного хэша полного дезинфицированного имени. При очистке короткого имени некоторые из 64 символов содержат суффиксы списка отзыва сертификатов (CRL), например (123).

Часть имени центра сертификации в строке конфигурации, возвращаемой этим методом, является исходным текстом, введенным во время установки. Обратите внимание, что методы служб сертификации, требующие имени центра сертификации в качестве параметра, принимают первоначально введенное имя центра сертификации. Например, для имени # центра сертификации YourName
Метод ICertView2::OpenConnection принимает #YourName в качестве части центра сертификации параметра.

Примеры

В следующем примере показано, как использовать этот метод для получения строки конфигурации центра сертификации по умолчанию.


    ICertConfig2 * pConfig = NULL;
    BSTR  bstrConfig = NULL; //Contains CA configuration name
    HRESULT    hr;

    hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
    if (FAILED(hr))
    {
        printf("Failed CoInitializeEx - [%x]\n", hr);
        goto error;
    }

    // Create an instance of the CertConfig object.
    hr = CoCreateInstance( CLSID_CCertConfig,
                           NULL,
                           CLSCTX_INPROC_SERVER,
                           IID_ICertConfig2,
                           (void **)&pConfig);
    if (FAILED(hr))
    {
        printf("Failed CoCreateInstance - pConfig [%x]\n", hr);
        goto error;
    }

    // Retrieve the default CA configuration string.
    hr = pConfig->GetConfig(CC_DEFAULTCONFIG, &bstrConfig);
    if (FAILED(hr))
    {
        printf("Failed GetConfig - [%x]\n", hr);
        goto error;
    }
    else
        printf("GetConfig returned: %ws\n", bstrConfig );

error:

    // Done processing.
    if (pConfig)
        pConfig->Release();

    if (bstrConfig)
        SysFreeString(bstrConfig);

    CoUninitialize();

Требования

Требование Значение
Минимальная версия клиента Ни одна версия не поддерживается
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header certcli.h (включая Certsrv.h)
Библиотека Certidl.lib
DLL Certcli.dll

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

CCertConfig

ICertConfig

ICertView2::OpenConnection