| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > TService запускается в WinXP, но WinServer2008 |
| Автор: prgmdelphi 27.6.2014, 15:48 | ||||
| Добрый день. Ранее для определенных задач был написан собственный сервис (наследник от TService). Все было хорошо сервис без проблем работал в WinXP, но встала задача запустить его на Windows Server 2008. Сервис установился в службы, но вот при попытке его запуска выдается сообщение мол нет доступа код ошибки 5. В реестре для пользователей этого сервиса назначил максимальные права, все равно ошибка доступа. Вот думаю может что-то в Win Server 2008 изменилось и теперь требуется другой подход работы с сервисами? Не вдаваясь в подробности, логика работы сервиса у меня была такой - если запуск MyService.exe происходил с параметром /INSTALL или /UNINSTALL то все сводилось к вызову некого моего метода Execute, который собственно создавал TMyService - наследник TService, а именно:
Но помимо базовых параметров /INSTALL или /UNINSTALL были свои собственные параметры /START /STOP (старт и остановка сервиса). Они позволяли пользователю управлять сервисом из под командной строки, например, MyService.exe /START приводил к запуску сервиса. Старт сервиса делался в целом так (не стал здесь приводить целый класс, поэтому упростил код, чтобы минимизировать размер):
Так вот при вызове WinSvc.StartService-возвращается, что мол нет доступа. |
| Автор: prgmdelphi 27.6.2014, 18:09 | ||||
Очень просто - когда инсталируется сервис в реестре создается группа с именем нашего сервера HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\имя_сервиса так вот на эту папке можно назначать права. Когда мой сервис отказался запускаться, то я и попробовал добавить прав, но все равно это не помогло.
Нет [quote=kami, 27.6.2014, 16:03, post2614979]А если попытаться запустить сервис из под пользователя (пусть даже и админа) без повышения прав - конечно будет Access Denied. без повышения прав - права на эту группу дал "Полный доступ" даже обычным пользователям, все равно не помогает
Нужны |
| Автор: PointerToNil 28.6.2014, 08:12 |
| дык, может быть, у пользователя, который запускает MyService.exe /START, нет прав на запуск сервисов? и причем тут права на ветку реестра? (это её вы группой назвали?) не при ее чтении/записи же ошибка-то возникает |
| Автор: prgmdelphi 28.6.2014, 12:16 |
| А ларчик просто открывался... нужно прогу (Far, cmd и т.п.), в которой мы будем запускать наш сервис MyService.exe /START запустить через меню от админа, даже если твой пользователь сам админ. Да и еще немаловажно, чтобы на папке где храниться наш файл MyService.exe был доступ, а именно по умолчанию добавлена группа "Администраторы" и полные правы. В противном случае уже ничего не поможет |
| Автор: kami 30.6.2014, 08:02 | ||||
<offtop> - Алло, техподдержка? У меня компьютер пишет "нажмите любую клавишу"!!! Что делать? - Ну, а вы нажимали? - Нет, как-то не догадался... </offtop> |