Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2014, 16:51   #1
prgmdelphi
Пользователь
 
Регистрация: 13.05.2014
Сообщений: 73
Вопрос TService без вопросов запускается в WinXP, но WinServer 2008 сообщение отказано в доступе 5

Добрый день. Ранее для определенных задач был написан собственный сервис (наследник от TService). Все было хорошо сервис без проблем работал в WinXP, но встала задача запустить его на Windows Server 2008. Сервис установился в службы, но вот при попытке его запуска выдается сообщение мол нет доступа код ошибки 5. В реестре для пользователей этого сервиса назначил максимальные права, все равно ошибка доступа. Вот думаю может что-то в Win Server 2008 изменилось и теперь требуется другой подход работы с сервисами?
Не вдаваясь в подробности, логика работы сервиса у меня была такой - если запуск MyService.exe происходил с параметром /INSTALL или /UNINSTALL то все сводилось к вызову некого моего метода Execute, который собственно создавал TMyService - наследник TService, а именно:
Код:
if not SvcMgr.Application.DelayInitialize or SvcMgr.Application.Installing then
  SvcMgr.Application.Initialize;
SvcMgr.Application.CreateForm(TMyService, MyService);
SvcMgr.Application.Run;
Но помимо базовых параметров /INSTALL или /UNINSTALL были свои собственные параметры /START /STOP (старт и остановка сервиса). Они позволяли пользователю управлять сервисом из под командной строки, например, MyService.exe /START приводил к запуску сервиса.
Старт сервиса делался в целом так (не стал здесь приводить целый класс, поэтому упростил код, чтобы минимизировать размер):
Код:
 ServiceControlManager := OpenSCManagernil, nil, SC_MANAGER_ALL_ACCESS);
 if (ServiceControlManager <> 0) then
 begin
   ServiceHandle := OpenService(ServiceControlManager, 'MyService', SERVICE_ALL_ACCESS);
   if (ServiceHandle <> 0) then 
     WinSvc.StartService(ServiceHandle, 0, ServiceArgVectors); // ServiceArgVectors == nil
 end;
Так вот при вызове WinSvc.StartService-возвращается, что мол нет доступа.
prgmdelphi вне форума Ответить с цитированием
Старый 27.06.2014, 17:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты посмотри свойства установленной службы. От чьего имени она запускается?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.06.2014, 19:20   #3
prgmdelphi
Пользователь
 
Регистрация: 13.05.2014
Сообщений: 73
Вопрос

Цитата:
Сообщение от Stilet Посмотреть сообщение
А ты посмотри свойства установленной службы. От чьего имени она запускается?
Посмотрел и вот что обнаружил - делаю так:
В списке служб Windows'a открываю свойства моей службы - открывается диалоговое окно. В нем выбираю вкладку "Вход в систему" - выбрано с "Системной учетной записью". Если же выбрать другой пункт - "С учетной записью" и выбрать пользователя Windows с правами админа то все Ок - служба начинает запускаться.
Что делать?
Изображения
Тип файла: png Service.PNG (15.4 Кб, 36 просмотров)
prgmdelphi вне форума Ответить с цитированием
Старый 27.06.2014, 20:22   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что делать?
Ну поставь там запуск с учетки админа )
В чем проблема то? - Разовая настройка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.06.2014, 22:15   #5
prgmdelphi
Пользователь
 
Регистрация: 13.05.2014
Сообщений: 73
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну поставь там запуск с учетки админа )
В чем проблема то? - Разовая настройка.
Узнал как решить проблему - нужно прогу (Far, cmd и т.п.), в которой мы будем запускать наш сервис MyService.exe /START запустить через меню от админа, даже если твой пользователь сам админ.

Да и еще немаловажно, чтобы на папке где храниться наш файл MyService.exe был доступ, а именно по умолчанию добавлена группа "Администраторы" и полные правы. В противном случае уже ничего не поможет
Изображения
Тип файла: png RunAsAdmin.png (4.9 Кб, 30 просмотров)

Последний раз редактировалось Stilet; 28.06.2014 в 09:01.
prgmdelphi вне форума Ответить с цитированием
Старый 28.06.2014, 03:12   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от prgmdelphi Посмотреть сообщение
Узнал как решить проблему - нужно прогу (Far, cmd и т.п.), в которой мы будем запускать наш сервис MyService.exe /START запустить через меню от админа, даже если твой пользователь сам админ.
Имхо, не понимаешь, что начиная с Висты есть админ и есть админ! И это две разные разницы (как говорили в Одессе
Но и почему сервис запускается через стороннюю программу мне тоже не понятно.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отказано в доступе Makin_tosh C++ Builder 9 15.05.2013 21:08
VB.NET Отказано в доступе при распаковке ресурсов на диск Inex Общие вопросы .NET 1 01.11.2012 11:31
Полное заполнение таблицы в общем доступе/, но без права повторного редактирования ячеек после сохранения Print Microsoft Office Excel 3 01.10.2011 13:20
Отказано в доступе до диска Е Sasha_Honcharuk Безопасность, Шифрование 0 26.03.2011 19:08
Отказано в доступе Bat{CMD}_Men Операционные системы общие вопросы 8 20.06.2010 17:35