powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Проблемы с сервисом
25 сообщений из 25, страница 1 из 1
Проблемы с сервисом
    #33381911
Michael Puchkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!

Понадобилось тут иметь на сервере постоянно запущенным некоторое приложение ( чужое ), которое по-умолчанию интерактивно и требует авторизации в домене. Как известно многим, сервера обычно находятся в разлогиненном состоянии. Отсюда возникает проблема запуска приложения в режиме системного сервиса (под конкретным пользователем, а не под системой). Есть разные полезные утилиты типа srvany.exe из Microsoft Windows Resource Kit, позволяющие добиться требуемого эффекта.

Проблема возникакет в следующем: именно в режиме сервиса приложение порой слетает, не оставляя никаких сообщений. При этом запуск его с помощью под залогиненым пользователем никаких ошибок не возникает.

Отсюда вопрос - как можно следить за деятельностью приложения, запущенного в виде сервиса? Можно ли, например, отобразить его окно в терминале?

Буду рад всем советам.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33381979
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант 1: прописать в services.msc действия на вываливание сервиса, если это сервис.
Вариант 2: если это не сервис, а просто приложение запускается сервисом, то могу выслать свой вариант (сервис, при старте смотрит первую секцию файла sysexec.ini, запускает от своего имени перечисленные в секции программы и забывает о них. Через интервал времени, указанный в секции CheckInterval, запускаются приложения, перечисленные в секции CheckIfRunning, наличие их в памяти проверяется через тот же интервал. Если нет, то запускаются. При остановке сервиса из памяти выгружаются процессы, перечисленные в последней секции)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
[PathsToExecute]
Path1=sol.exe
Path2=winmine.exe
Path3=freecell.exe
Path4=calc.exe
Path5=cmd.exe


[CheckIfRunning]
Path1=notepad.exe

[CheckInterval]
Interval= 10000 

[TerminateOnExit]
Path1=notepad.exe
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382240
Michael Puchkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Меня интересуют нюансы работы и отладки самого приложения, а не самописного аналога srvany, позволяющего запускать любую программу в качестве сервиса.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382267
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, понял. Выставить интерактивность в свойствах сервиса не пробовали?
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382357
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор(под конкретным пользователем, а не под системой).
несовместимо с
авторА, понял. Выставить интерактивность в свойствах сервиса не пробовали?
насколько я помню.
Так что наверняка решение будет похоже на авторсамописного аналога srvany

У меня такое было - там требовалось контолировать иногда, что именно пишется в окне сервиса.
Делал свой сервис, из которого запускал приложение, хватал его stdout и перенаправлял в сокет, в любой момент можно было присоединиться к нему и наблюдать в реальном времени. С любого нужного рабочего места.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382382
Michael Puchkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot --null
У меня такое было - там требовалось контолировать иногда, что именно пишется в окне сервиса.
Делал свой сервис, из которого запускал приложение, хватал его stdout и перенаправлял в сокет, в любой момент можно было присоединиться к нему и наблюдать в реальном времени. С любого нужного рабочего места.[/quot]

STDOUT - это, конечно, хорошо. Только прога GUIшная и писана непойми кем. Живет криво.
Пытался "шпионить" и посылать сообщения типа "показать окно"... Не помогает... Вот как бы ей хэндл родительского окна поменять... Реально такое?
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382444
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
е-мое, так вот Вы про что... я почему-то думал что это консоль. Ну не допер :-)


Не думаю, что хендл родительского окна как-то поможет.
Насколько я помню, у любого оконного приложения есть Window Station (понятие может быть знакомо разбирающимся с Terminal Server) - так вот тут надо копать в эту сторону imho. Ваши окна - в Вашей Window Station, а этого сервиса - явно в другой, надо как-то его на Вашу перенаправить. Все это IMHO.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382492
mihon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про "Window Station" первый раз слышу. Где почитать что-нибудь не особо заумное? В Windows API на это не натыкался.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382541
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Win32 API велик и могуч, не всегда повод наткнуться есть.

Можно начать с функций GetProcessWindowStation(), GetThreadDesktop() из MSDN и т.д.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382687
Michael Puchkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это называется незаумное? :) Есть еще идеи?

А пока посмотрим это...
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382764
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭто называется незаумное? :) Есть еще идеи?

Michael Puchkov ну у Вас и задача-то стоит, прямо скажем - нетривиальная.

Я бы начал с попытки написания своего сервиса, кооторый мог бы отображать окно на обычный десктоп. А дальше уже с этой чужой прогой как-нибудь... Геморрой, конечно. Но если сделаете - будете монстром. Кстати, как-то видел в инете сорцы утилиты уделенного администрирования (типа PCAnywere) - их тоже поизучать интересно - могли бы помочь. Стоит ли игра свеч-решать Вам.



Вообще Imho запускать GUI проги как сервис - это плохая идея.

Например
авторПроблема возникакет в следующем: именно в режиме сервиса приложение порой слетает, не оставляя никаких сообщений. При этом запуск его с помощью под залогиненым пользователем никаких ошибок не возникает.
Вполне может статься, что это происходит, когда GUI порождает нечто, что не может выполняться в том "песвдодесктопе", в котором существует сервис.
Какое-нибудь окно появляется, которое он не периваривает или событие какое-нибудь порождается. Хрен знает. Расскажете кстати, когда разберетесь :-)

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

У меня есть подобное приложение. Это GUI прога, которая управляет телефонной платой. Как я выхожу из ситуации? От идеи сервиса отказался, тем более что иногда надо в этом приложении не только наблюдать, но и кое-что щелкать в GUI.

Я просто держу на виндовом сервере "вечную" постоянную терминальную сессию с этим приложением. Она обычно отсоединена вообще.

Недостаток один - при перезагрузке сервис поднимался бы сам. Но перезагрузки очень редки, да и если бы это меня напрягало - что-нибудь бы придумал, наверное.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382796
Michael Puchkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--null--Я бы начал с попытки написания своего сервиса, кооторый мог бы отображать окно на обычный десктоп. А дальше уже с этой чужой прогой как-нибудь... Геморрой, конечно. Но если сделаете - будете монстром. Кстати, как-то видел в инете сорцы утилиты уделенного администрирования (типа PCAnywere) - их тоже поизучать интересно - могли бы помочь. Стоит ли игра свеч-решать Вам.
Да там и так написан свой сервис... Только на Java... Так что отображать окно он никуда не сможет, ибо работать с виндой на низком уровне не умеет. Писать не на Java не предлагать - ибо в этом есть необходимость.

--null--
Например
авторПроблема возникакет в следующем: именно в режиме сервиса приложение порой слетает, не оставляя никаких сообщений. При этом запуск его с помощью под залогиненым пользователем никаких ошибок не возникает.
Вполне может статься, что это происходит, когда GUI порождает нечто, что не может выполняться в том "песвдодесктопе", в котором существует сервис.
Какое-нибудь окно появляется, которое он не периваривает или событие какое-нибудь порождается. Хрен знает. Расскажете кстати, когда разберетесь :-)

Самое забавное в том, что какое-то время всё работало. Потом перестало. Теперь пытаюсь понять, почему.

--null--
Я просто держу на виндовом сервере "вечную" постоянную терминальную сессию с этим приложением. Она обычно отсоединена вообще.

Ну в таком режиме оно и живет временно, пока с сервисом не разберемся. :)
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382921
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael PuchkovДень добрый!

Понадобилось тут иметь на сервере постоянно запущенным некоторое приложение ( чужое ), которое по-умолчанию интерактивно и требует авторизации в домене. Как известно многим, сервера обычно находятся в разлогиненном состоянии. Отсюда возникает проблема запуска приложения в режиме системного сервиса (под конкретным пользователем, а не под системой). Есть разные полезные утилиты типа srvany.exe из Microsoft Windows Resource Kit, позволяющие добиться требуемого эффекта.

Проблема возникакет в следующем: именно в режиме сервиса приложение порой слетает, не оставляя никаких сообщений. При этом запуск его с помощью под залогиненым пользователем никаких ошибок не возникает.

Отсюда вопрос - как можно следить за деятельностью приложения, запущенного в виде сервиса ? Можно ли, например, отобразить его окно в терминале?

Буду рад всем советам.

1) Script вроде такого
net start |FIND "<myservice_name>" >nul
if not ERRORLEVEL 1 GOTO OK
net start <myservice_name>
:OK
в планировщик задач и расписание: запуск каждые 5 мин (5 сек?).
А опосля спокойно пишешь свой сервис.

2) В свойствах "Восстановление" сервиса ставишь рестарт при аварийном завершении.
------------------------
Кстати и программы (не сервисы) проще запускать планировщиком, чем srvany.exe
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382967
Michael Puchkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks21) Script вроде такого
....
2) В свойствах "Восстановление" сервиса ставишь рестарт при аварийном завершении.
------------------------
Кстати и программы (не сервисы) проще запускать планировщиком, чем srvany.exe
Читайте тред целиком прежде, чем отвечать. Требуется совсем не это.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33382988
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Puchkov aleks21) Script вроде такого
....
2) В свойствах "Восстановление" сервиса ставишь рестарт при аварийном завершении.
------------------------
Кстати и программы (не сервисы) проще запускать планировщиком, чем srvany.exe
Читайте тред целиком прежде, чем отвечать. Требуется совсем не это.

Каков вопрос - таков ответ.
------------------
Ты сам то свой вопрос читал?
>>Отсюда вопрос - как можно следить за деятельностью приложения, запущенного в виде сервиса?
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33383024
Michael Puchkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks2Ты сам то свой вопрос читал?
>>Отсюда вопрос - как можно следить за деятельностью приложения, запущенного в виде сервиса?
Мне надо следить за деятельностью а не за состоянием . А Вы предлагаете второй вариант.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33383081
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael PuchkovМне надо следить за деятельностью а не за состоянием . А Вы предлагаете второй вариант. - между делом: если дверь толкают вместо того, чтобы тянуть, значит, у двери плохой дизайн. Если пост понимают неправильно, значит, в нем неверно расставлены акценты.
По делу: можно прицепиться к процессу а) отладчиком б) просто вести наблюдение за оpen handles (Open Files, Registry, Pipes, etc.) и окна. Во втором варианте можно обойтись дешево и сердито: запускаем две копии process explorer'a (www.sysinternals.com), выделяем в каждом наш (ваш :) ) процесс, затем в первом менеджере отображаем handles, во втором - dlls. Попутно запускаем что-то вроде Spy++ с автообновлением (скажем, я пользуюсь демо-программой из дистрибутива Delphi). Все аккуратно расставляем на экране, (подбираем разрешение побольше) и запускаем утилиту снятия изображения с монитора в файл (идеально что-то вроде HyperCam, пишет в avi, а если комп слабоват, то можно просто настроить снятие скриншота через заданный интервал.
В результате должны получить некоторую картину по окнам, dll и open handles (файлы, ветки реестра, мутексы, др.) в момент вываливания процесса.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33383605
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автори запускаем утилиту снятия изображения с монитора в файл

дык в этой ситуации изображения <проги> особенно и не будет.

Я бы так сформулировал этот топик:


Можно ли в Windows увидеть окно GUI приложения, запущенного как сервис

Вопрос интересный.
Остальное все - шелуха и детали. Imho
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33383657
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null-- автори запускаем утилиту снятия изображения с монитора в файл

дык в этой ситуации изображения <проги> особенно и не будет.

Я бы так сформулировал этот топик:


Можно ли в Windows увидеть окно GUI приложения, запущенного как сервис

Вопрос интересный.
Остальное все - шелуха и детали. Imho А автор все-таки прав - внимательнее надо читать :) Я предлагаю снимать не то, чего нет, а сведения о процессе, отображаемые менеджерами процессов и window enumerators.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33383687
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null-- Можно ли в Windows увидеть окно GUI приложения, запущенного как сервис - такой вариант: запускаем (от имени Local System) программу снятия скриншотов через заданные промежутки времени с рабочего стола пользователя Local System, на котором запущено GUI-приложение. И смотрим :) Щас проверю.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33383690
Michael Puchkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rrrrrrrrrrА автор все-таки прав - внимательнее надо читать :) Я предлагаю снимать не то, чего нет, а сведения о процессе, отображаемые менеджерами процессов и window enumerators.
Этого порой недостаточно :( К тому-же те "шпионы", которые я пока нашел, не видят процессов под другими пользователями. Жаль, что Process Explorer не позволяет сохранять историю изменений...
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33383773
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, Windows не тратит сил на полноценный Window Station неинтерактивного пользователя: запустил cmd и калькулятор от системы, затем снимал скриншоты - белый экран :( Скрины брал стандартно, GetDesktopWindow, GetDC, ..., BitBlt.
ntfilemon, ntregmon - может, они что прояснят?
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33383945
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПохоже, Windows не тратит сил на полноценный Window Station неинтерактивного пользователя

rrrrrrrrrr да, думаю что-то типа того!
Я тоже про это собственно :-)

Michael Puchkov если прога на Java (как я понял) - exceptions в ней ведь в консоль бросаются, вдруг это чем поможет.
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33383962
Michael Puchkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--null--Michael Puchkov если прога на Java (как я понял) - exceptions в ней ведь в консоль бросаются, вдруг это чем поможет.Java-прога запускает неJava-прогу... А уже та глючит :(
...
Рейтинг: 0 / 0
Проблемы с сервисом
    #33557749
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запоздалый положительный ответ на вопрос (в смысле: да, можно сделать интерактивным процесс, работающий по сети):
Resource Kit 2kSrvany Notes

--------------------------------------------------------------------------------

Running from the Working Directory
If Srvany fails to start an application, try specifying the directory containing the application as the working directory. As Srvany can run under an account that is different from the user who is currently logged on, environment variables might be set differently, and, as a result, the system might be unable to find a required DLL. Running the application from its root directory might solve the problem.

Interactivity versus Network Access
Due to a restriction enforced by Windows on services, the application can either be interactive (for example, it might read keyboard input) or have network access, but not both at the same time. If you know which servers your interactive service application needs to connect to, it is possible to configure these servers (or selected shares on them) to allow your service (running under the LocalSystem account) to gain access to them.
To allow LocalSystem services on any computer in the domain to connect to a specific share on a server, use a registry editor to add the name of that share in the following registry location:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
LanmanServer\Parameters\NullSessionShares
If LocalSystem services also need to gain access to named pipes on that server, add the named pipes in the following registry location:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
LanmanServer\Parameters\NullSessionPipes
To allow access to all shares and pipes on the server by LocalSystem services, add the following RestrictNullSessAccess entry, with a data type of DWORD and a value of 0:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
LanmanServer\Parameters\RestrictNullSessAccess



Note

Adding this entry to the registry allows everyone in the domain to gain access to the server.

Programming Considerations
With Win32 graphical applications, all top-level windows receive the WM_QUERYENDSESSION and WM_ENDSESSION messages when the user logs off. Some Win32 applications quit when they receive these messages. In order for a Win32 application to keep running when a user logs off, the default Windows procedure should be called when these messages are received.

Win32 character-based applications receive a CTRL_LOGOFF_EVENT event from the console when the user logs off. If your character-based application registers a console event handler (using SetConsoleCtrlHandler), it must ignore CTRL_LOGOFF_EVENT in order to keep running.

Presentation Manager Applications
When you use Srvany with Presentation Manager applications, special configuration instructions apply. Consult the Readme.wri file shipped on Disk#1 of the Windows NT Add-On Subsystem for Presentation Manager, version 3.51. Presentation Manager is a Microsoft add-on product that allows you to run 16-bit Presentation Manager 1.x applications in addition to the OS/2 character-mode applications supported by the Windows OS/2 subsystem.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Проблемы с сервисом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]