Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-9140
dim2001
2002-02-17 17:40
2002.03.04
вставка подпрограммы


1-9151
Tsatur Soft
2002-02-16 23:35
2002.03.04
Срочно!


1-9117
romulas
2002-02-13 14:33
2002.03.04
Help!!!


3-9093
harismatik
2002-02-06 16:35
2002.03.04
Шестнадцатиричные значения в базе


14-9289
mvg_first
2002-01-10 13:38
2002.03.04
Пара предложений для Мерлина (присоединяйтесь!)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский