| Предыдущий | Следующий |
| SL_E_SFS_INVALID_TOKEN_DESCRIPTOR | E_HANDLE |
E_ACCESSDENIED
Что означает E_ACCESSDENIED
E_ACCESSDENIED (0x80070005) — Общая ошибка отказа в доступе.
Контекст результата 0x80070005 — подсистема «COM/WinRT» и область «контракт вызываемого interface, аргументы и state объекта». Условие «общая ошибка отказа в доступе» указывает на тему «accessdenied», а не на общий отказ всего компонента.
Что проверить и как подтвердить исправление
Первый шаг — сопоставьте первый отказ с фактическими параметрами операции. Когда при 0x80070005 система сообщает «общая ошибка отказа в доступе», сопоставьте security context процесса или службы с ACL, правами и учётными данными целевого объекта; запуск с повышенными правами используйте только как контроль.
Для воспроизведения 0x80070005 сохраните IID и method, thread/apartment, argument values, object state и исходный HRESULT; отдельно запишите IDs, CLSID, HRESULT. По теме «accessdenied» для 0x80070005 сравните эти данные с исправным запуском до очистки журналов или пересоздания объекта.
Для 0x80070005 применяйте исправление на границе первого отказа: приведите аргументы и жизненный цикл объекта к контракту метода; неизменённый вызов после contract failure повторять не следует. Сообщение «общая ошибка отказа в доступе» при 0x80070005 не следует подавлять общей обработкой исключения.
Считайте исправление подтверждённым только после устойчивого повтора исходного сценария без результата 0x80070005 и без обхода штатных проверок.
Документация для результата 0x80070005: Microsoft Open Specifications: HRESULT values · COM clients and servers · CoGetClassObject.
Нужно найти другой код? Найти другой код состояния или ошибки.