Método ICertConfig::GetConfig (certcli.h)
O método GetConfig recupera a cadeia de caracteres de configuração para um servidor dos Serviços de Certificados . Esse método foi definido pela primeira vez na interface ICertConfig .
A cadeia de caracteres de configuração é o nome do servidor e o nome da autoridade de certificação separados por uma barra invertida (\); por exemplo: ServerName\CAName. Essa cadeia de caracteres de configuração pode ser usada para se referir sem ambiguidade a um servidor específico dos Serviços de Certificados. Para obter mais informações, consulte Comentários.
Sintaxe
HRESULT GetConfig(
[in] LONG Flags,
[out] BSTR *pstrOut
);
Parâmetros
[in] Flags
Valor que especifica a autoridade de certificação a ser usada. Esse parâmetro pode usar um dos valores a seguir.
[out] pstrOut
Um ponteiro para um BSTR que contém a configuração. Quando terminar de usar a configuração, chame a função SysFreeString para liberar pbstrOut.
Retornar valor
C++
Se o método for bem-sucedido, o método retornará S_OK.Se o método falhar, ele retornará um valor HRESULT que indica o erro. Para obter uma lista de códigos de erro comuns, consulte Valores HRESULT comuns.
VB
O valor retornado é uma cadeia de caracteres que contém a configuração.Comentários
A parte do nome da AC (autoridade de certificação ) da cadeia de caracteres de configuração retornada por essa função é o texto exato inserido durante o processo de instalação dos Serviços de Certificados. Observe que esse texto pode ser diferente da forma do nome da AC encontrado em nomes de arquivo (como para a lista de revogação de certificado) ou em chaves do Registro. Isso ocorre porque os nomes de arquivo e as chaves do Registro usam uma versão higienizada do nome da AC.
O processo de limpeza do nome da AC é necessário para remover caracteres inválidos para nomes de arquivo, nomes de chave do Registro ou valores de nome diferenciados ou inválidos por motivos específicos dos Serviços de Certificados. No processo de limpeza, qualquer caractere inválido no nome comum é convertido em uma representação de cinco caracteres no formato !xxxx, em que ! é usado como um caractere de escape e xxxx representa quatro dígitos hexadecimal que identificam exclusivamente o caractere a ser convertido.
Por exemplo, o sinal de número (#) não é permitido em nomes diferenciados no Active Directory. Se o nome da AC inserido durante a instalação for #YourName, o nome da AC sanitizada será !0023YourName.
Os caracteres a seguir, se inseridos para o nome comum da AC durante a instalação, são convertidos no !Formato xxxx durante o processo de limpeza. Esta lista está sujeita a alterações.
Nome | Caractere | Valor no formato !xxxx |
---|---|---|
E comercial | & | !0026 |
Apóstrofo | ' | !0027 |
Asterisk | * | !002a |
Barra invertida | \ | !005c |
Chave esquerda | { | !007b |
Chave direita | } | !007d |
Colchete esquerdo | [ | !005b |
Colchete direito | ] | !005d |
Cursor | ^ | !005e |
Dois pontos | : | !003a |
Vírgula | , | !002c |
Sinal de igual | = | !003d |
Ponto de exclamação | ! | !0021 |
Acento grave | ` | !0060 |
Maior que o sinal | > | !003e |
Sinal menor que | < | !003c |
Sinal de número | # | !0023 |
Abrir parênteses | ( | !0028 |
Parêntese de fechamento | ) | !0029 |
Porcentagem | % | !0025 |
Pipe | | | !007c |
Sinal de adição | + | !002b |
Ponto de interrogação | ? | !003f |
Aspas | " | !0022 |
Ponto e vírgula | ; | !003b |
Barra | / | !002f |
Todos os caracteres não imprimíveis e todos os caracteres Unicode que não são de sete bits também são convertidos no !formato xxxx .
Um nome curto higienizado é gerado quando o nome higienizado é muito longo para um RDN ( nome diferenciado relativo ) dos serviços de diretório de 64 caracteres. O nome curto higienizado consiste no nome higienizado truncado e acrescentado com um hash do nome totalmente higienizado. O nome curto higienizado reserva alguns dos 64 caracteres para conter sufixos de CRL ( lista de revogação de certificado ), como (123).
A parte do nome da autoridade de certificação da cadeia de caracteres de configuração retornada por esse método é o texto original inserido durante a instalação. Observe que os métodos dos Serviços de Certificados que exigem um nome de autoridade de certificação como um parâmetro aceitam o nome da autoridade de certificação inserida originalmente. Por exemplo, para o nome # da autoridade de certificação YourName, o
O método ICertView2::OpenConnection aceita #YourName como parte da autoridade de certificação do parâmetro.
Exemplos
O exemplo a seguir mostra como usar esse método para recuperar a cadeia de caracteres de configuração de autoridade de certificação padrão.
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();
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Nenhum compatível |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | certcli.h (inclua Certsrv.h) |
Biblioteca | Certidl.lib |
DLL | Certcli.dll |