Магазин сертификатов на моей коробке Win7 постоянно висит. Заметим:
C: \> 1.cmd C: \> certutil -? | Findstr / я пинг -ping - интерфейс запроса службы сертификации Active Directory -pingadmin - интерфейс администратора службы сертификации Active Directory C: \> установить PROMPT = $ P ($ t) $ G C: \ (13: 04: 28.57)> certutil -ping CertUtil: -ping команда СБОЙ: 0x80070002 (WIN32: 2) CertUtil: система не может найти указанный файл. C: \ (13: 04: 58.68)> certutil -pingadmin CertUtil: команда -pingadmin СБОЙ: 0x80070002 (WIN32: 2) CertUtil: система не может найти указанный файл. C: \ (13: 05: 28.79)> set PROMPT = $ P $ G C: \>
Пояснения:
- Первая команда показывает, что есть
–ping
и–pingadmin
параметры для certutil - Попытка любого параметра ping завершится неудачно с тайм-аутом 30 секунд (текущее время отображается в приглашении)
Это серьезная проблема. Это винты все безопасное общение в моем приложении. Если кто знает как это можно исправить - поделитесь пожалуйста.
Спасибо.
PS
1.cmd - просто пакет этих команд:
certutil -? | findstr /i ping
set PROMPT=$P($t)$G
certutil -ping
certutil -pingadmin
set PROMPT=$P$G
EDIT1
Мне удалось определить единый API Windows, который вызывает проблему - DsGetDcName
Согласно windbg, certutil -ping вызывает это так:
PDOMAIN_CONTROLLER_INFO pdci;
DWORD ret = ::DsGetDcName(NULL, NULL, NULL, NULL, DS_DIRECTORY_SERVICE_PREFERRED, &pdci);
На моей рабочей станции время ожидания составляет 30 секунд, а затем возвращается код ошибки 1355 ERROR_NO_SUCH_DOMAIN
: «Контроллер домена недоступен для указанного домена или домен не существует».
На другом компьютере, который является случайно Windows Server 2003, он почти сразу возвращается с правильным именем контроллера домена в возвращаемой DOMAIN_CONTROLLER_INFO
структуре.
Теперь возникает вопрос: чего не хватает на моей рабочей станции для того API, чтобы найти правильный контроллер домена?