Compartilhar via


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.

Valor Significado
CC_DEFAULTCONFIG
0x00000000
Recupera a autoridade de certificação padrão.
CC_FIRSTCONFIG
0x00000002
Retorna a primeira autoridade de certificação.
CC_LOCALACTIVECONFIG
0x00000004
Recupera a autoridade de certificação local se ela estiver em execução.
CC_LOCALCONFIG
0x00000003
Recupera a autoridade de certificação local.
CC_UIPICKCONFIG
0x00000001
Exibe uma interface do usuário que permite que o usuário selecione uma autoridade de certificação.
CC_UIPICKCONFIGSKIPLOCALCA
0x00000005
Exibe uma interface do usuário que permite que o usuário selecione uma autoridade de certificação. A interface do usuário exclui qualquer autoridade de certificação local. Essa exclusão é útil durante a renovação de certificado da autoridade de certificação subordinada quando a solicitação de certificado da autoridade de certificação subordinada é enviada a uma autoridade de certificação diferente da autoridade de certificação atual.

[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

Confira também

CCertConfig

ICertConfig

ICertView2::OpenConnection