Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Служба не работает под Win7 [D7]


[ВладОшин] ©   (2013-12-13 17:06:00) 

дайте пинка в сторону,
почему может служба, которая запускается и работает на XP,
не запускаться на 7

На XP запускается, пишет в Eventlog. Да и дальше работает нормально
т.е. один exe копирую на обе машины, инсталю, на XP нормально, под 7 - никак.

delphi 7

Не выполняется даже первая строка
TServiceDvbt = class(TService)

procedure TServiceDvbt.ServiceStart(Sender: TService; var Started: Boolean);
begin
 ToLog('Service DVBT Starting..');


[ВладОшин]   (2013-12-15 10:32:00) [1]

да, а я уж все перебрал, с паники то :)
Модераторам - Прошу прощения "за бложик" :)


Inovet   (2013-12-14 16:44:00) [2]

> [10] [ВладОшин] ©   (14.12.13 15:16)
> Service1

Вот она сущность автоименованного зла.


[ВладОшин]   (2013-12-14 15:16:00) [3]

И опять ступил
А как же тогда у меня дома заработало?!

Все, теперь точно, нашел!
Когда  первый раз поставил службу - забыл дать ей имя, осталась она Service1
Потом имя поменял.
А ОС, когда запускает, ждет же Service1 что ей ответит (наверное так)

1. Деинсталлировал службу
2. cmd -> sc delete Service1
3. Инсталлировал

И все работает :)

А дома заработала, потому что не инсталлировал до этого под именем Service1, а сразу под переделанным


[ВладОшин]   (2013-12-14 14:54:00) [4]

блин..Все понял
Скопировал домой код с работы - и дома не работает

короче,
В одном модуле другой модуль и там инициализация не правильная, для окна когда делал, не убрал..А модуль из uses так и не потер.

Ладно, ступил, всем спасибо! :)


[ВладОшин]   (2013-12-14 13:15:00) [5]

да,
а дома все работает, тоже 7ка


[ВладОшин]   (2013-12-14 13:12:00) [6]


> повторюсь - права.

да, наверное..
Уже на некоторые серваки не могу заходить, смотрю..
зы
Я тут увольняюсь,  дорабатываю последние времена..
Хотелось подчистить хвосты, а то придет психически неуравновешенный маньяк, а адрес мой в ОК есть :)


sniknik   (2013-12-14 11:16:00) [7]

отлаживать нужно либо подключаться к процессу (в инете есть описания), либо "выкручиваться" :), я вот постоянно делаю службу "в одном флаконе" с гуевой программой... отлаживать логику проще в ней.

> И весь сервис работает на XP, повторюсь
повторюсь - права. хр меньше защищается и потому больше позволяет. под 7ку писать нужно более... грамотно... осмотрительно...

> так не запускается ж вообще..
вот тут ты врешь...
раз бежит -
> Индикатор о запуске бежит, бежит, и - все..
значит программа запустилась, а от службы нет ответа.

первая строка программы, в dpr - begin (там же Application.Run; до которого утебя возможно не доходит), но есть еще код модулей в их инициализациях.


[ВладОшин]   (2013-12-14 01:36:00) [8]

В чем еще засада - не понимаю, как отладить. Как ошибку получить?
Я б ее логгировал - так не запускается ж вообще..


[ВладОшин]   (2013-12-14 01:33:00) [9]

даже вот так - не работает.
Индикатор о запуске бежит, бежит, и - все..

type
 TServiceDvbt = class(TService)
   procedure ServiceExecute(Sender: TService);
   procedure ServiceStart(Sender: TService; var Started: Boolean);
   procedure ServiceStop(Sender: TService; var Stopped: Boolean);
 private      { Private declarations }
 public       { Public declarations }
   function GetServiceController: TServiceController; override;
 end;

var
 ServiceDvbt: TServiceDvbt;

implementation
{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
 ServiceDvbt.Controller(CtrlCode);
end;

function TServiceDvbt.GetServiceController: TServiceController;
begin
 Result := ServiceController;
end;

procedure TServiceDvbt.ServiceExecute(Sender: TService);
begin
while not(Terminated) do
  ServiceThread.ProcessRequests(true);
end;

procedure TServiceDvbt.ServiceStart(Sender: TService; var Started: Boolean);
begin
 Started := True;
end;

procedure TServiceDvbt.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
 Stopped := True;
end;


[ВладОшин]   (2013-12-14 01:28:00) [10]


> не работает функция ToLog ?

не знаю.
Но когда я ее копирую в оконное приложение, она работает. В лог пишется.

И весь сервис суть - запустить поток, ловить и логировать от него мссаджи -
так этот поток запускается, если в оконном приложении его вставить и работает

И весь сервис работает на XP, повторюсь

> один exe копирую на обе машины, инсталю, на XP нормально,
>  под 7 - ника

под 7 не работает также,  если почти все закомментирую и оставлю только
procedure TServiceDvbt.ServiceStart(Sender: TService; var Started: Boolean);
begin
Started := true;
end;

UAC отключил
админ


> Германн ©   (13.12.13 22:38) [2]

не понял твоего тонкого юмора
я так написал про первую строку, т.к. это самая первая осебятина. До нее все стандартно.
На XP, где нормально  работает, первая строка в логе после запуска - именно эта запись о начале старта службы


Германн   (2013-12-13 22:38:00) [11]


> Не выполняется даже первая строка

Забавно звучит.
А это разве самаяпервая строка, если разговор идет об отладчике?


sniknik   (2013-12-13 20:14:00) [12]

не работает функция ToLog ?  ко всему остальному. прав нет?


Наверх

Титульная страница Поиск, карта сайта Написать письмо