Метод ICertConfig::GetConfig (certcli.h)
Метод GetConfig извлекает строку конфигурации для сервера служб сертификатов . Этот метод был впервые определен в интерфейсе ICertConfig .
Строка конфигурации — это имя сервера и имя центра сертификации , разделенные обратной косой чертой (\); Например: Имя_\сервера CAName. Эту строку конфигурации можно использовать для однозначной ссылки на конкретный сервер служб сертификатов. Дополнительные сведения см. в подразделе "Примечания".
Синтаксис
HRESULT GetConfig(
[in] LONG Flags,
[out] BSTR *pstrOut
);
Параметры
[in] Flags
Значение, указывающее используемый центр сертификации. Этот параметр может принимать одно из указанных ниже значений.
[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 |