| Предыдущий | Следующий |
| 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. Правильное решение — выделить отдельный стабильный идентификатор, а не удалять регистрацию первого продукта.
Ссылки
- Microsoft: константы ошибок NAP
- Microsoft: RegisterEnforcementClient
- Microsoft: пример регистрации SHA
- Microsoft: интерфейсы NAP
Нужно найти другой код? Найти другой код состояния или ошибки.