информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Портрет посетителяСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Сервис не запускает апликацию 26.06.02 16:51  Число просмотров: 1019
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
А сервис интерактивный (SERVICE_INTERACTIVE_PROCESS)?

cb.
<programming>
[Win32] Сервис не запускает апликацию 26.06.02 11:02  
Автор: bronf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
На ХР мой сервис не может запустить аппликацию(обычный CreateProcess). Апликация при старте показывает небольшое окно и минимизируется. При попытке запуска сервиса апликация запускается на долю секунды и тут же прекращается, а система выдает сообщение:The service on Local computer started and then stopped. Some services stop automatically if they have no work to do, for example, the Perfomance Logs and Alerts service. Понятно, что проблема в необходимости интеракции с Desktop, но что с этим делать?
[Win32] Сервис не запускает апликацию 26.06.02 17:55  
Автор: IgorR <Igor Razin> Статус: Member
<"чистая" ссылка>
Под 2000 нормально запускается. Ставлю в свойствах Allow service to interact with desktop и телемаркет.
А вообще, по-хорошему, сервис не должен взаимодействовать с десктопом.
[Win32] Сервис не запускает апликацию 26.06.02 16:51  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
А сервис интерактивный (SERVICE_INTERACTIVE_PROCESS)?

cb.
[Win32] Сервис не запускает апликацию 27.06.02 11:36  
Автор: bronf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> А сервис интерактивный (SERVICE_INTERACTIVE_PROCESS)?
>
> cb.
Нет. Да и не должен по идее. Все, что он делает - это запускает аппликацию. Сервис хранит ее Pointer to PROCESS_INFORMATION structure и при закрытии сервиса выполняет TerminateProcess. Это работает под Win2000 и в debug ( из console) под ХР. Похоже я просто чего-то не доопределяю в CreateProcess:
CreateProcess( NULL, strzCommandLine, NULL, NULL, FALSE, 0, NULL,
NULL, &si, &g_pi )
[Win32] Сервис не запускает апликацию 27.06.02 12:07  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> Нет. Да и не должен по идее. Все, что он делает - это
> запускает аппликацию. Сервис хранит ее Pointer to
> PROCESS_INFORMATION structure и при закрытии сервиса
> выполняет TerminateProcess. Это работает под Win2000 и в
> debug ( из console) под ХР. Похоже я просто чего-то не
> доопределяю в CreateProcess:
> CreateProcess( NULL, strzCommandLine, NULL, NULL, FALSE,
> 0, NULL,
> NULL, &si, &g_pi )

я делаю точно также, только сервис интерактивный - все работает..
сделай сервис интерактивным (хотя бы для теста) и посмотри заработает или нет, а потом уж можно подумать как проделать такое из неинтерактивного сервиса...

cb.
[Win32] Сервис не запускает апликацию 27.06.02 18:51  
Автор: bronf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Похоже, проблема не в интерактивности. Сама аппликация падает и пишет в Event Viewer сообщение о невозможности загрузить что-то из environment.
[Win32] Сервис не запускает апликацию 28.06.02 10:21  
Автор: SerpentFly <Vadim Smirnov> Статус: Member
<"чистая" ссылка>
Когда у тебя интерактивный сервис он запускается на \\Windows\WindowStations\WinSta0 (случаи с терминальными сервисами и прочими извратами с созданием всяческих расширений не рассматриваем) и соответсвенно все процессы им созданные запускаются там же. Это как раз та windows station к которой привязан тот десктоп(ы) который ты видишь.

Если сервис не интерактивный, то он работает на \\Windows\WindowStations\Service-0x0-3e7$, как и все процессы им порожденные (без дополнительных ухищрений). Так что вывод своего вновь порожденного процесса ты в принципе не увидишь, так как он будет работать на window station десктоп(ы) которой ты просто не видишь (если он там вообще существует, сейчас лениво проверять)... Не исключено что запустившись в таких необычных условиях твое приложение и валиться...
[Win32] Сервис не запускает апликацию 03.07.02 15:45  
Автор: bronf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
При создании сервиса нужно этот десктоп аллоцировать или это происходит по умолчанию?
Если я просто пишу в CreateService(.., SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS, .. - этого достаточно для создания интерактивного сервиса или требуется еще что-то?

> Когда у тебя интерактивный сервис он запускается на
> \\Windows\WindowStations\WinSta0 (случаи с терминальными
> сервисами и прочими извратами с созданием всяческих
> расширений не рассматриваем) и соответсвенно все процессы
> им созданные запускаются там же. Это как раз та windows
> station к которой привязан тот десктоп(ы) который ты
> видишь.
[Win32] Сервис не запускает апликацию 03.07.02 16:42  
Автор: SerpentFly <Vadim Smirnov> Статус: Member
<"чистая" ссылка>
> При создании сервиса нужно этот десктоп аллоцировать или
> это происходит по умолчанию?
> Если я просто пишу в CreateService(..,
> SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS, .. -
> этого достаточно для создания интерактивного сервиса или
> требуется еще что-то?

Достаточно. Вообще можно просто поправить ключик твоего сервиса в реестре ;-)
[Win32] Сервис не запускает апликацию 03.07.02 19:57  
Автор: bronf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Тогда ерунда какая-то получается: из консоли аппликация запускается и работает, а из-под сервиса - нет!

> > При создании сервиса нужно этот десктоп аллоцировать
> или
> > это происходит по умолчанию?
> > Если я просто пишу в CreateService(..,
> > SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS,
> .. -
> > этого достаточно для создания интерактивного сервиса
> или
> > требуется еще что-то?
>
> Достаточно. Вообще можно просто поправить ключик твоего
> сервиса в реестре ;-)
А ты всё-таки попробуй. Похоже, проблема в твоём сервисе. И ещё — 28.06.02 06:34  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
есть рульная программа, называется SrvAny, отлажена и работает у всех уже много лет. Попробуй запусти свою "аппликацию" под ним ;-)))))))))
Этим определишь, что конкретно у тебя не работает.
А ты всё-таки попробуй. Похоже, проблема в твоём сервисе. И ещё — 03.07.02 09:25  
Автор: bronf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> есть рульная программа, называется SrvAny, отлажена и
> работает у всех уже много лет. Попробуй запусти свою
> "аппликацию" под ним ;-)))))))))
> Этим определишь, что конкретно у тебя не работает.
В сервисе у меня не хватало цикла ожидания в функции EntryPoint (собственно выполнение сервисом полезной деятельности). Теперь сервис запускается (хотя, как ни странно, под 2000 он и раньше нормально вроде отрабатывал), однако "аппликация" пишет в EventViewer сообщение об ошибке"function ncsy_basenv_init returns = '-11' " . В debug (concole) выполняется. Что такого нет у сервиса, что есть у консоли? :)
Что такое SrvAny и где ее можно взять?
Про SrvAny и не только 04.07.02 21:42  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
> В сервисе у меня не хватало цикла ожидания в функции
> EntryPoint (собственно выполнение сервисом полезной
> деятельности). Теперь сервис запускается (хотя, как ни
> странно, под 2000 он и раньше нормально вроде отрабатывал),
> однако "аппликация" пишет в EventViewer сообщение об
> ошибке"function ncsy_basenv_init returns = '-11' " . В
> debug (concole) выполняется. Что такого нет у сервиса, что
> есть у консоли? :)
> Что такое SrvAny и где ее можно взять?

SrvAny.exe это такая программа... Она есть сервис, и запускает любую другую прога, которую нужно указать в параметрах. Впрочем, вот ссылка —
<A HREF=ftp://ftp.uni-stuttgart.de/pub/systems/winnt/reskit/i386/srvany_x86.exe target=_top>.
Посмотри, запускается ли твоя прога под этим сервисом. Попробуй указать флаг, что это интерактивный сервис, поскольку твоя прога консольная и поэтому будет пытаться создать дескриптор консоли, который взаимодействовует c WindowStation, которая в неинтерактивном сервисе может не подойти твоей проге ;-)) Ты на чём пишешь? У меня есть отлаженный код сервиса, который "тикает" через равные промежутки времени. Имеет возможность паузы. Сам себя устанавливает\удаляет. Размер получающегося EXE ~ 20k. Могу поделиться :-))))))))))
Попробуй ShellExecute 26.06.02 14:13  
Автор: йцукенг <jcukeng> Статус: Member
<"чистая" ссылка>
Попробуй ShellExecute 03.07.02 15:50  
Автор: bronf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Это как-то избыточно. :) Я почти не знаком с написанием интерфейсов и необходимость передавать в функцию windows handle меня откровенно затрудняет. Он может быть нулевым (NULL )?
Попробуй ShellExecute 04.07.02 21:52  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
> Это как-то избыточно. :) Я почти не знаком с написанием
В общем-то, немного да.
> интерфейсов и необходимость передавать в функцию windows
Нет там никаких интефейсов. Системный стандартный вызов функции из библиотеки Shell32.dll, и выглядит примерно так (я пишу на Delphi):
ShellExecute(0, 'open', 'C:\WINNT\notepad.exe', Nil, Nil, SW_SHOW);
> handle меня откровенно затрудняет. Он может быть нулевым
> (NULL )?
В твоём случае он ДОЛЖЕН быть нулевым ;-)))
Удачи!
Попробуй ShellExecute 08.07.02 10:41  
Автор: bronf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Это все работает, но программа (не сервис!) по-прежнему падает. Так как писали ее не у нас и что ей нужно неизвестно - продолжать этим заниматься смысла не имеет. Нужно им написать суровое письмо. :)
За помощь большое спасибо.

> > Это как-то избыточно. :) Я почти не знаком с
> написанием
> В общем-то, немного да.
> > интерфейсов и необходимость передавать в функцию
> windows
> Нет там никаких интефейсов. Системный стандартный вызов
> функции из библиотеки Shell32.dll, и выглядит примерно так
> (я пишу на Delphi):
> ShellExecute(0, 'open', 'C:\WINNT\notepad.exe', Nil, Nil,
> SW_SHOW);
> > handle меня откровенно затрудняет. Он может быть
> нулевым
> > (NULL )?
> В твоём случае он ДОЛЖЕН быть нулевым ;-)))
> Удачи!
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach