| Предыдущий | Следующий |
| MQ_ERROR_ACCESS_DENIED | MQ_ERROR_INSUFFICIENT_RESOURCES |
MQ_ERROR_PRIVILEGE_NOT_HELD
Что означает MQ_ERROR_PRIVILEGE_NOT_HELD
MQ_ERROR_PRIVILEGE_NOT_HELD — У вызывающего процесса отсутствует системная привилегия Windows, необходимая для операции Message Queuing. Это не то же самое, что отсутствие права в ACL конкретной очереди.
В отличие от обычного ACL-отказа этот код указывает на отсутствующую системную привилегию Windows в токене вызывающего процесса. Такая привилегия может существовать в назначениях учётной записи, но быть не включена в текущем токене.
Что проверить
- Определите, какую системную привилегию требует конкретная MSMQ-операция, и проверьте её присутствие в фактическом process/thread token.
- Проверьте enabled-state привилегии непосредственно перед вызовом; не делайте вывод только по членству пользователя в административной группе.
- Если используется служба или олицетворение, сравните токен службы и токен клиента: требуемая privilege должна находиться в том контексте, где MSMQ её проверяет.
Как подтвердить исправление
После исправления исходная операция проходит с минимально необходимой включённой привилегией, а тестовый токен без неё по-прежнему возвращает ожидаемый отказ.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.