Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.04;
Скачать: CL | DM;

Вниз

Отладка сервиса в W2K.   Найти похожие ветки 

 
AlexP   (2001-12-26 19:09) [0]

Подскажите, пожалуйста, как запустить сервис в debuger-е. Дельфийский HELP учит это делать двумя способами, которые не работают для W2K.


 
Vovchik   (2002-01-02 00:43) [1]

Ну, по-моему один из точно работающих методов отладки сервисов - это писать подробный лог (системный или просто в файл). Или можно сделать "Attach to process". Возможно, для этого придётся запустить Дельфи с правами SYSTEM"а. Если не знаешь, как это сделать, напиши, подскажу.


 
Кто то из толпы   (2002-01-03 23:26) [2]

2Vovchik
Напиши, пожалуйста, прямо в форуме. Может еще кому то твой совет сгодится.


 
Vovchik   (2002-01-04 00:11) [3]

Запустить любую программу с правами SYSTEM"а можно, написав сервис. Сервис пишется на Дельфи за 1 мин. При создании сервиса создаётся по умолчанию одна (основная) нить этого сервиса. У неё (как и у любой другой нити) есть процедура Execute. В ней достаточно прописать слежующее:

winexec("cmd.exe",sw_show);
//ну, или CreateProcess, если кого коробит при виде винекзека

Сервис надо зарегистрировать. Для этого надо запустить файл сервиса с параметром /INSTALL (если я не путаю).
Потом запускаем сервис, сервис при старте запустит "cmd.exe" и завершится. Из-под этого cmd можно будет запускать что-угодно. И это что угодно будет с правами SYSTEM"а, потомучто сервис работает именно с такими правами.
Это выглядит не очень красиво, но для отладки, думаю, подойдёт. Естественно сервис должен иметь доступ к рабочему столу. И не надо делать автозагрузку, просто запускать его вручную, когда понадобится.
Ну, а если кто захочет покрасивее, то можно написать нормальный сервис, который будет всё время запущен и будет, к примеру, слушать клавир. И при каком-нибудь сочетании клавиш будет чего-нибудь запускать.
Должен заметить, что, к примеру, TaskManager с правами система будет иметь возможность убить ЛЮБОЙ процесс, в т.ч. system или services.exe. Оба варианта фатальны для системы. Будьте осторожны.


 
Tosov ©   (2002-01-04 00:39) [4]

Vovchik
А ты сам это проверял? Запускается твоя программа? (в смысле -ты ее видишь?)


 
Алексей Петров ©   (2002-01-04 09:19) [5]

Службу такого рода я как-то писал (с иконкой в tray для запуска cmd или TaskMgr под системой).

Кому интересно - положил в кладовку - http://delphi.mastak.ru/download/273.zip


 
savva ©   (2002-01-04 10:13) [6]

>Алексей Петров © (04.01.02 09:19)
Архив порченный или многотомный..


 
Алексей Петров ©   (2002-01-04 10:39) [7]

> savva © (04.01.02 10:13)
Скачал, проверил - WinZip-ом раскрывается.


 
Vovchik   (2002-01-04 12:17) [8]

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


 
Oxy2   (2002-01-04 12:27) [9]

2savva
Архив не порченый и не многотомный.Все нормально распаковывается.

2Алексей Петров
А исходник нельзя посмотреть?

2Vovchik
Опубликуй, если не жалко.


 
Алексей Петров ©   (2002-01-04 12:29) [10]

> Vovchik (04.01.02 12:17)
А может тоже в кладовку положешь?
Моё то творчество было за 3 минуты давно сделано с минимально необходимым на тот момент функционалом, т.е. cmd под SYSTEM и все :)


 
Vovchik   (2002-01-04 18:09) [11]

Не жалко, опубликую. Называется "MultiDesktop Creator". Правда, у меня там в одном архиве и сама прога и исходники. Так получилось, бывает.
Только не смотрите, что там некоторые кривости есть. Читайте readme.txt, там действительно полезные вещи есть.


 
Tosov ©   (2002-01-04 23:42) [12]

Vovchik

В ней достаточно прописать слежующее:
winexec("cmd.exe",sw_show);
//ну, или CreateProcess, если кого коробит при виде винекзека


У тебя в исходниках этого winexec нет, но есть createprocess,а выше строчки
d:=PChar("winsta0\desktop"+IntToStr(i));
Si.lpDesktop:=d;
Может раскажешь как их в winexec засунуть?А то меня от createprocess коробит :)

ЗЫ.А то что можно запустить процесс из сервиса я не сомневался..



 
Vovchik ©   (2002-01-05 00:25) [13]

Не, в винекзек никак

d:=PChar("winsta0\desktop"+IntToStr(i));
Si.lpDesktop:=d;

не засунешь. CreateProcess нужен. А кому щас легко?


 
Tosov ©   (2002-01-05 00:41) [14]

Vovchik
А как запустить Дельфи из сервиса с WinExec и чтобы Дельфи было видно ? (или winexec запускает автоматом на winsta0\default ?

Обижаешь, непроверенное не предлагаю


 
Mick   (2002-01-05 10:38) [15]

я делал это так:
Всю функциональность сервиса выносил в модуль данных и делал два проекта использующих этот модуль. Один dpr был Service Application второй просто GUI приложением, в котором все отлаживал. То, что критично именно для сервиса, отлаживал ведением лога.


 
Vovchik ©   (2002-01-05 12:45) [16]

Sorry, я сразу не врубился. WinExec запускает только на стол "Winsta0\Default". А если на другой надо, то CreateProcess. Я действительно не предлагаю непроверенное.



Страницы: 1 вся ветка

Текущий архив: 2002.03.04;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
1-9141
SireX
2002-02-17 16:27
2002.03.04
INI Files


1-9127
grab
2002-02-16 21:21
2002.03.04
заполнение ListBox


1-9183
USAtyj
2002-02-12 18:21
2002.03.04
Про массивы и про High() (+)


1-9195
IronHawk
2002-02-12 15:37
2002.03.04
ПРОСТО ! Быстрый, тупой, вопрос !


4-9323
Alexey(Me)
2002-01-03 14:11
2002.03.04
E-Mail