| Предыдущий | Следующий |
| PERSIST_E_NOTSELFSIZING | CERT_E_EXPIRED |
TRUST_E_NOSIGNATURE
Что означает TRUST_E_NOSIGNATURE
TRUST_E_NOSIGNATURE (0x800B0100) означает, что trust provider не нашёл пригодную цифровую подпись у объекта, который ему передали на проверку. Для PE-файла это обычно означает отсутствие ожидаемой Authenticode-подписи; для другого типа субъекта причина может быть в том, что приложение проверяет не тот объект или использует неподходящее действие WinTrust.
Этот результат важно отличать от ошибок сертификатной цепочки. При CERT_E_UNTRUSTEDROOT, CERT_E_EXPIRED и похожих кодах подпись уже найдена и дальнейшая проверка дошла до сертификатов. При TRUST_E_NOSIGNATURE начинать с установки корневых сертификатов обычно бессмысленно.
Что проверить
- Убедитесь, что именно этот файл, пакет или сообщение по правилам продукта должен быть подписан.
- Проверьте наличие подписи средством, которое понимает формат объекта, например SignTool или свойствами цифровой подписи файла.
- Если код вернул
WinVerifyTrust, сохраните action GUID, тип субъекта и фактический путь к проверяемому файлу. Ошибка выбора объекта может выглядеть как отсутствие подписи. - Для Windows-пакета проверьте наличие и целостность подписи пакета; неподписанный пакет нельзя исправить изменением trust store — его требуется подписать корректным сертификатом.
Как подтвердить исправление
Повторите ту же проверку для того же объекта и policy action. Исправлением считается появление распознаваемой подписи и успешное прохождение политика доверия; замена проверки на более слабую или её отключение не подтверждает устранение причины.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
