Что означает код HRESULT 0x80270003 (NAP_E_CONFLICTING_ID)?

 
Предыдущий Следующий
NAP_E_MISSING_SOH NAP_E_NO_CACHED_SOH

NAP_E_CONFLICTING_ID

Идентификатор сущности NAP конфликтует с существующей регистрацией

NAP_E_CONFLICTING_ID — это HRESULT 0x80270003 (знаковое десятичное значение -2144927741, беззнаковое десятичное значение 2150039555). AllStat на основании winerror.h описывает его так: «Идентификатор сущности конфликтует с уже зарегистрированным идентификатором». Значение обозначает ошибку, имеет код средства 0x27 и поле кода 0x0003.

Для случая конфликта идентификаторов зарегистрированных сущностей этот HRESULT относится к устаревшей технологии Network Access Protection: NAP недоступна начиная с Windows 10, а современные выпуски Windows Server не содержат прежних ролей NAP, HRA и HCAP. Поэтому его следует учитывать при разрешении конфликта владельцев идентификатора на поддерживаемых устаревших системах, в архивной телеметрии, компонентах совместимости или проектах миграции, не ожидая наличия прежней платформы на современном компьютере.

Конфликтующим ресурсом является регистрационный идентификатор

Компоненты NAP регистрируются под числовыми идентификаторами, и эти идентификаторы являются частью протокола, а не только отображаемыми метаданными. Microsoft указывает этот HRESULT для INapClientManagement::RegisterEnforcementClient, когда другой агент применения требований уже использует переданный идентификатор. Общее имя константы говорит об «идентификаторе сущности», поэтому для других мест вызова точный тип компонента нужно определять по методу регистрации и его структуре NapComponentRegistrationInfo.

Распространённые причины совпадения идентификаторов

  • Вторая установка того же клиента применения требований пытается зарегистрироваться, не обнаружив существующую регистрацию.
  • Два поставщика или внутренних продукта независимо выбрали одинаковый жёстко заданный EnforcementEntityId или SystemHealthEntityId.
  • При обновлении изменились CLSID компонента или расположение файла, но был повторно использован идентификатор, прежняя регистрация которого не была удалена.
  • Откат развёртывания восстановил двоичные файлы, но не вернул базу регистраций к соответствующей версии.
  • Тестовый и рабочий компоненты находятся на одном компьютере и собраны с одинаковым демонстрационным идентификатором.

Данные об идентичности

  • Зафиксируйте запрошенный числовой идентификатор, категорию компонента, понятное имя, поставщика, версию, CLSID и API регистрации.
  • Запросите существующую регистрацию NAP и сравните сведения о владельце, не предполагая, что совпадающее понятное имя обязательно означает тот же компонент.
  • Запишите продукт и версию установщика, а также тип операции: установка, восстановление, обновление, откат или удаление.
  • Сохраните контекст безопасности и область компьютера, поскольку состояние регистрации может различаться между автономным образом, целевой системой и испытательным узлом.

Безопасное устранение конфликта

  • Определите текущего зарегистрированного владельца идентификатора и убедитесь, что его файлы и регистрация продукта по-прежнему действительны.
  • Если выполняется идемпотентная переустановка того же компонента, сравните все поля идентичности, прежде чем решать, что изменения не требуются.
  • Если владелец устарел, отвяжите и отмените его регистрацию через поддерживаемый API управления, а не удаляйте произвольные значения реестра.
  • Когда два активных компонента должны сосуществовать, назначьте действительно уникальный документированный идентификатор; не создавайте новое значение при каждом запуске.

Отличие от соседних результатов NAP

NAP_E_ID_NOT_FOUND обозначает обратное условие поиска: для запрошенного идентификатора компонента нет соответствующей записи. Ошибки установщика вида NAP_E_ALREADY могут относиться к идентичности пакета, тогда как этот код касается именно идентификатора сущности NAP. NAP_E_STILL_BOUND может помешать удалению старой регистрации, и эту проблему необходимо устранить до разрешения конфликта.

Повтор и восстановление

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

Практический сценарий

В лаборатории демонстрационный клиент применения требований Microsoft копируют в два продукта, не изменяя пример идентификатора сущности. Первый продукт регистрируется успешно, а второй получает NAP_E_CONFLICTING_ID. Правильное решение — выделить отдельный стабильный идентификатор, а не удалять регистрацию первого продукта.

Ссылки


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