Что означает код HRESULT 0xC00E0026 (MQ_ERROR_PRIVILEGE_NOT_HELD)?

 
Предыдущий Следующий
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 её проверяет.

Как подтвердить исправление

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

Технические ссылки


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