Как я узнаю, почему я получаю код EOSError 5 - Доступ запрещен при регистрации службы?

Я получаю код EOSError 5 - Доступ запрещен, когда приложение TServiceApplication пытается зарегистрировать службу в ServiceManager.

Я использую XE2 Win7 64 бит. Ошибка возникает как для 32, так и для 64-битных целей.

У меня есть модуль данных, который использует ADO для подключения к базе данных, и код сервера веб-служб. Весь код используется в проекте WinUI, который работает. У меня также есть непроверенная библиотека ISAPI, основанная на том же коде ядра.

Это первый раз, когда я пытался включить сервер веб-сервисов в сервис NT.

Я проследил код VCL, который выдает ошибку в строке 1027 Vcl.SvcMgr, но я не знаю, почему я получаю ошибку Access Denied. Я написал другие NT-сервисы, которые подключаются к базе данных через ADO и не сталкивались с такой ошибкой (хотя и написаны с помощью XE).

Любые указатели будут оценены.

1 ответ

Вероятно, вы столкнулись с проблемой разрешений UAC, которая предполагает запуск процесса установки службы с повышенными правами, например, из экземпляра cmd.exe, запущенного с помощью параметра "Запуск от имени администратора", но на самом деле это не так. Если у вас возникла эта проблема только с некоторыми службами, а не с другими, то уязвимые службы, вероятно, не содержат манифеста UAC, но содержат характеристики, которые запускают функцию обнаружения установщика UAC, как правило (но не ограничиваясь этим), зарезервированные ключевые слова в имени файла вашей службы или версия ресурса.

Другие вопросы по тегам