Что означает код NTSTATUS 0x40000016 (STATUS_PREDEFINED_HANDLE)?

 
Предыдущий Следующий
STATUS_FATAL_APP_EXIT STATUS_WAS_UNLOCKED

STATUS_PREDEFINED_HANDLE

Дескриптор имеет специальную семантику предопределённого раздела

Дескрипторы вроде HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER являются предопределёнными точками входа, а не обычными дескрипторами, возвращёнными для одного открытого раздела. Windows может кэшировать или перенаправлять их, а операции уровня процесса, такие как RegOverridePredefKey, изменяют, куда разрешается предопределённый дескриптор.

Это различие важно для служб и кода с олицетворением. Microsoft документирует отдельные API для отключения кэширования предопределённых дескрипторов и открытия раздела текущего олицетворённого пользователя, поскольку кэшированный HKEY_CURRENT_USER иначе может относиться к неожиданному контексту безопасности.

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

  • Определите, передал ли вызывающий код предопределённую константу или дескриптор открытого раздела.
  • Проверьте использование RegOverridePredefKey в установщиках и тестовых стендах.
  • Используйте RegOpenCurrentUser, когда требуется текущий олицетворённый пользователь.
  • Не применяйте обычные предположения о времени жизни к предопределённому дескриптору уровня процесса.

Ссылки


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