Сейчас на форуме: vsv1 (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Можно ли через WinApi загасить чужой сервис ?
Посл.ответ Сообщение

Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 14 февраля 2008 14:52
· Личное сообщение · #1

Понимаю, можно написать .bat файл который будет вызываться из проги и гасить сервис, но можно ли это сделать более красиво, пряма напрямую из проги. Порывшись в WinApi функциях ничего не нашел. Возможно можно как-то послать сервису комманду, чтобы он сам заглушился ? Ведь когда винда выключается она должна нечто подобное проделывать. Отсюда вопрос, можно ли посылать сервису команды ?
Может кто подскажет где можно популярно почитать про сервисы и с чем их едят ?
Заранее спасибо.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 14 февраля 2008 15:43
· Личное сообщение · #2

windwail пишет:
Может кто подскажет где можно популярно почитать про сервисы и с чем их едят ?

Ну если ты можешь "написать .bat файл который будет вызываться из проги и гасить сервис", то я думаю читать тебе ничего не надо... В чём проблема? "пряма напрямую из проги" можно также вызывать команды, как и из батника!

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 14 февраля 2008 22:56
· Личное сообщение · #3

ну вот так можно

procedure UninstallService(ServiceName: pchar);
var
SCManager: SC_HANDLE;
Service: SC_HANDLE;
begin
SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCManager = 0 then Exit;
Service := OpenService(SCManager, ServiceName, SERVICE_ALL_ACCESS);
ControlService(Service, SERVICE_CONTROL_STOP, Status);
DeleteService(Service);
CloseServiceHandle(Service);
CloseServiceHandle(SCManager);
end;


-----
[nice coder and reverser]





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 15 февраля 2008 02:35
· Личное сообщение · #4

а если нужны именно команды из bat, то
1. Можно использовать WinExec, но появляется окно консоли, а это не красиво (но иногда приемлимо).
2. ShellExecute(Handle,'open',PChar(FileName),PChar(Parameters),nil,SW_HI DE);
где:
PChar(FileName) - путь к программе
PChar(Parameters) - параметры командной строки
SW_HIDE - запуск в скрытом режиме

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 15 февраля 2008 16:08
· Личное сообщение · #5

Круто!
Спасибо большое за ценную инфу!



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 16 февраля 2008 19:00
· Личное сообщение · #6

Можно вообще без всяких батников и SCManager'ов

ShellExecute(handle,'open',net','stop spooler',nil,sw_hide);


 eXeL@B —› Вопросы новичков —› Можно ли через WinApi загасить чужой сервис ?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати