Что означает код HRESULT 0x80090018 (NTE_PROV_TYPE_ENTRY_BAD)?

 
Предыдущий Следующий
NTE_PROV_TYPE_NOT_DEF NTE_KEYSET_NOT_DEF

NTE_PROV_TYPE_ENTRY_BAD

Что означает NTE_PROV_TYPE_ENTRY_BAD

NTE_PROV_TYPE_ENTRY_BAD (0X80090018) означает, что тип криптографического поставщика, переданный в dwProvType, существует в конфигурации Windows, но его зарегистрированная запись повреждена или недопустима. Microsoft отдельно указывает, что проблема может находиться как в пользовательском, так и в системном списке CSP по умолчанию.

В отличие от ошибки отсутствующего provider type, здесь Windows уже нашла регистрацию типа, но не может корректно использовать её. Поэтому смена ключевого контейнера или проверка входных данных шифрования обычно не затрагивает причину.

Что проверить

  • Зафиксируйте pszProvider, dwProvType, флаги CryptAcquireContext и учётную запись, от имени которой выполняется вызов.
  • Сравните поведение при явном имени CSP и при выборе поставщика по умолчанию. Если ломается только default selection, это помогает локализовать повреждённую запись типа.
  • Проверьте установку конкретного CSP и его регистрацию штатными средствами поставщика. Не начинайте с ручного редактирования security-provider registry: ошибка указывает именно на конфигурацию поставщика, и ручная правка может сделать её менее восстановимой.
  • Отличайте этот код от NTE_PROV_TYPE_NOT_DEF, где записи типа нет вовсе, и от NTE_PROVIDER_DLL_FAIL, где уже найденная DLL не загружается или не инициализируется.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.