O armazenamento de certificados na minha caixa Win7 está constantemente pendurado. Observar:
C: \> 1.cmd C: \> certutil -? | findstr / i ping -ping - Interface de solicitação de serviços de certificado do Active Directory Ping -pingadmin - Interface de administrador dos serviços de certificado do Active Directory de ping C: \> defina PROMPT = $ P ($ t) $ G C: \ (13: 04: 28.57)> certutil -ping Comando CertUtil: -ping FAILED: 0x80070002 (WIN32: 2) CertUtil: O sistema não consegue encontrar o arquivo especificado. C: \ (13: 04: 58.68)> certutil -pingadmin Comando CertUtil: -pingadmin FAILED: 0x80070002 (WIN32: 2) CertUtil: O sistema não consegue encontrar o arquivo especificado. C: \ (13: 05: 28.79)> defina PROMPT = $ P $ G C: \>
Explicações:
- O primeiro comando mostra que existem
–ping
e–pingadmin
parâmetros para certificar - A tentativa de qualquer parâmetro de ping falha com o tempo limite de 30 segundos (a hora atual é vista no prompt)
Esse é um problema sério. Ele estraga toda a comunicação segura no meu aplicativo. Se alguém souber como isso pode ser corrigido - compartilhe.
Obrigado.
PS
1.cmd é simplesmente um lote desses comandos:
certutil -? | findstr /i ping
set PROMPT=$P($t)$G
certutil -ping
certutil -pingadmin
set PROMPT=$P$G
EDIT1
Consegui fixar a API do Windows único que causa o problema - DsGetDcName
De acordo com o windbg, o certutil -ping o chama assim:
PDOMAIN_CONTROLLER_INFO pdci;
DWORD ret = ::DsGetDcName(NULL, NULL, NULL, NULL, DS_DIRECTORY_SERVICE_PREFERRED, &pdci);
Na minha estação de trabalho, o tempo limite é excedido por 30 segundos e retorna o código de erro 1355, que é ERROR_NO_SUCH_DOMAIN
Nenhum controlador de domínio disponível para o domínio especificado ou o domínio não existe.
Em outra máquina, que é acidentalmente um servidor Windows 2003, ele retorna quase imediatamente com o nome correto do controlador de domínio dentro da DOMAIN_CONTROLLER_INFO
estrutura retornada .
Agora, a pergunta é o que está faltando na minha estação de trabalho para que a API encontre o controlador de domínio correto?