![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отладка сервиса в W2K. [D5, Win2k]
AlexP © (2001-12-26 19:09:00)Подскажите, пожалуйста, как запустить сервис в debuger-е. Дельфийский HELP учит это делать двумя способами, которые не работают для W2K.
Vovchik (2002-01-05 12:45:00) [1]Sorry, я сразу не врубился. WinExec запускает только на стол "Winsta0\Default". А если на другой надо, то CreateProcess. Я действительно не предлагаю непроверенное.
Mick (2002-01-05 10:38:00) [2]я делал это так:
Всю функциональность сервиса выносил в модуль данных и делал два проекта использующих этот модуль. Один dpr был Service Application второй просто GUI приложением, в котором все отлаживал. То, что критично именно для сервиса, отлаживал ведением лога.
Tosov (2002-01-05 00:41:00) [3]Vovchik
А как запустить Дельфи из сервиса с WinExec и чтобы Дельфи было видно ? (или winexec запускает автоматом на winsta0\default ?
Обижаешь, непроверенное не предлагаю
Vovchik (2002-01-05 00:25:00) [4]Не, в винекзек никак
d:=PChar("winsta0\desktop"+IntToStr(i));
Si.lpDesktop:=d;
не засунешь. CreateProcess нужен. А кому щас легко?
Tosov (2002-01-04 23:42:00) [5]Vovchik
В ней достаточно прописать слежующее:
winexec("cmd.exe",sw_show);
//ну, или CreateProcess, если кого коробит при виде винекзека
У тебя в исходниках этого winexec нет, но есть createprocess,а выше строчки
d:=PChar("winsta0\desktop"+IntToStr(i));
Si.lpDesktop:=d;
Может раскажешь как их в winexec засунуть?А то меня от createprocess коробит :)
ЗЫ.А то что можно запустить процесс из сервиса я не сомневался..
Vovchik (2002-01-04 18:09:00) [6]Не жалко, опубликую. Называется "MultiDesktop Creator". Правда, у меня там в одном архиве и сама прога и исходники. Так получилось, бывает.
Только не смотрите, что там некоторые кривости есть. Читайте readme.txt, там действительно полезные вещи есть.
Алексей Петров (2002-01-04 12:29:00) [7]> Vovchik (04.01.02 12:17)
А может тоже в кладовку положешь?
Моё то творчество было за 3 минуты давно сделано с минимально необходимым на тот момент функционалом, т.е. cmd под SYSTEM и все :)
Oxy2 (2002-01-04 12:27:00) [8]2savva
Архив не порченый и не многотомный.Все нормально распаковывается.
2Алексей Петров
А исходник нельзя посмотреть?
2Vovchik
Опубликуй, если не жалко.
Vovchik (2002-01-04 12:17:00) [9]Обижаешь, непроверенное не предлагаю. Такой сервис у меня есть написанный. Даже более того, я писал сервис, который всё время запущен и сидит в трее иконкой. Он слушает клаву и на заданное сочетание клавиш выводит окно, где можно ввести логин и пароль (существующие, естественно) и запускается прога в контексте указанного юзера. Кроме того, это сервис создаёт дополнительные рабочие столы (как в Линухе), что мне от него и надо было. Может, это будет кому-то интереснее, чем предложение Алексея Петрова.
Алексей Петров (2002-01-04 10:39:00) [10]> savva © (04.01.02 10:13)
Скачал, проверил - WinZip-ом раскрывается.
savva (2002-01-04 10:13:00) [11]>Алексей Петров © (04.01.02 09:19)
Архив порченный или многотомный..
Алексей Петров (2002-01-04 09:19:00) [12]Службу такого рода я как-то писал (с иконкой в tray для запуска cmd или TaskMgr под системой).
Кому интересно - положил в кладовку - http://delphi.mastak.ru/download/273.zip
Tosov (2002-01-04 00:39:00) [13]Vovchik
А ты сам это проверял? Запускается твоя программа? (в смысле -ты ее видишь?)
Vovchik (2002-01-04 00:11:00) [14]Запустить любую программу с правами SYSTEM"а можно, написав сервис. Сервис пишется на Дельфи за 1 мин. При создании сервиса создаётся по умолчанию одна (основная) нить этого сервиса. У неё (как и у любой другой нити) есть процедура Execute. В ней достаточно прописать слежующее:
winexec("cmd.exe",sw_show);
//ну, или CreateProcess, если кого коробит при виде винекзека
Сервис надо зарегистрировать. Для этого надо запустить файл сервиса с параметром /INSTALL (если я не путаю).
Потом запускаем сервис, сервис при старте запустит "cmd.exe" и завершится. Из-под этого cmd можно будет запускать что-угодно. И это что угодно будет с правами SYSTEM"а, потомучто сервис работает именно с такими правами.
Это выглядит не очень красиво, но для отладки, думаю, подойдёт. Естественно сервис должен иметь доступ к рабочему столу. И не надо делать автозагрузку, просто запускать его вручную, когда понадобится.
Ну, а если кто захочет покрасивее, то можно написать нормальный сервис, который будет всё время запущен и будет, к примеру, слушать клавир. И при каком-нибудь сочетании клавиш будет чего-нибудь запускать.
Должен заметить, что, к примеру, TaskManager с правами система будет иметь возможность убить ЛЮБОЙ процесс, в т.ч. system или services.exe. Оба варианта фатальны для системы. Будьте осторожны.
Кто то из толпы (2002-01-03 23:26:00) [15]2Vovchik
Напиши, пожалуйста, прямо в форуме. Может еще кому то твой совет сгодится.
Vovchik (2002-01-02 00:43:00) [16]Ну, по-моему один из точно работающих методов отладки сервисов - это писать подробный лог (системный или просто в файл). Или можно сделать "Attach to process". Возможно, для этого придётся запустить Дельфи с правами SYSTEM"а. Если не знаешь, как это сделать, напиши, подскажу.