Что означает код HRESULT 0xC00E0021 (MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR)?

 
Предыдущий Следующий
MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION MQ_ERROR_SENDERID_BUFFER_TOO_SMALL

MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR

MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR: смысл кода и диагностика

MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR — HRESULT, относящийся к области Microsoft Message Queuing. Переданный дескриптор безопасности Windows недействителен для операции с очередью Message Queuing.

В случае MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR статус возник в Message Queuing. Применительно к MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR он может быть локальным API-отказом либо результатом обращения к службе каталогов или удалённой машине.

Практический вывод для MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR: этот HRESULT фиксирует описанное условие, но сам по себе не показывает, какой участник операции первым нарушил контракт. Для MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR найдите первый вызов, вернувший статус, и только после этого меняйте конфигурацию подсистемы Microsoft Message Queuing.

Как читать имя MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR

Имя MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR помогает сузить поиск: ERROR — ошибка; ILLEGAL — недопустимая операция; SECURITY — проверка безопасности; DESCRIPTOR — дескриптор. Эти части имени не заменяют документацию API, но позволяют проверить, что журнал и код относятся к одному и тому же условию.

Что проверить в первую очередь

В случае MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR условие связано с правами, политикой или контекстом безопасности. Применительно к MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR проверять нужно реальный токен процесса и целевой объект, а не только членство пользователя в группе администраторов.

  • Для MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR зафиксируйте SID и integrity level вызывающего процесса, ACL/политику объекта и результат проверки под той же учётной записью.
  • При разборе MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR проверьте состояние службы MSMQ, достижимость удалённой машины и подключение к службе каталогов при необходимости.
  • При разборе MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR сверьте размеры буферов свойств и повторите запрос по документированной схеме определения требуемой длины.
  • При разборе MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR проверьте ACL очереди и системные привилегии под фактической учётной записью процесса.
  • При разборе MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR запишите path name и format name очереди, тип операции, права доступа и свойства, которые читались или записывались.

Какие данные собрать

  • Для MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR проверьте воспроизведение на локальной private queue, чтобы отделить сеть и каталог от API-контракта.
  • Для MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR не создавайте дубликат очереди до проверки существующего path name и instance identifier.
  • Для MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR сохраните HRESULT, PROPID, фактическую/требуемую длину и тип форматного имени.

Проверка после изменения

В случае MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR для MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR недостаточно скрыть ошибку повтором. Применительно к MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR после изменения воспроизведите исходную операцию, проверьте конечное состояние объекта и убедитесь, что ресурсы освобождаются без потери первичного HRESULT.

Ссылки по MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR


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