| Предыдущий | Следующий |
| ERROR_NO_SUCH_PRIVILEGE | ERROR_INVALID_ACCOUNT_NAME |
ERROR_PRIVILEGE_NOT_HELD
ERROR_PRIVILEGE_NOT_HELD (1314, 0x00000522) означает, что маркер доступа, выполняющий операцию, не имеет привилегии, которую Windows требует для этой операции. Привилегия отличается от обычных разрешений объекта, таких как запись ACL.
Важен эффективный маркер
Обычно процесс использует основной маркер, но поток, олицетворяющий клиента, проходит проверки безопасности с маркером олицетворения. Включение привилегии в неправильном маркере не помогает: привилегия должна присутствовать и быть включена именно в маркере, который выполняет защищённую операцию.
Что проверить
- Определите точную привилегию, требуемую API, например
SeRestorePrivilege,SeBackupPrivilegeилиSeSecurityPrivilege. - Проверьте эффективный маркер процесса или потока и убедитесь, что привилегия назначена и включена.
- Используйте
AdjustTokenPrivilegesможет только включить привилегию, уже присутствующую в маркере; добавить отсутствующую привилегию она не может. - Для служб, олицетворяющих клиентов, явно определите, должна ли защищённая работа выполняться от имени клиента или перед её выполнением следует вернуться к удостоверению службы.
См. документацию Microsoft о маркерах доступа, включении и отключении привилегийи AdjustTokenPrivileges.
Нужно найти другой код? Найти другой код состояния или ошибки.