Форум: "WinAPI";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];
ВнизОтладка сервиса в 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c