информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsСетевые кракеры и правда о деле ЛевинаПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[Win32] Сервис не запускает апликацию 27.06.02 18:51  Число просмотров: 1096
Автор: bronf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Похоже, проблема не в интерактивности. Сама аппликация падает и пишет в Event Viewer сообщение о невозможности загрузить что-то из environment.
<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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach