Страница: 1 |
Страница: 1 |
Вопрос: Эмуляция команды - остановка службы
Добавлено: 06.01.08 15:22
Автор вопроса: MadWay
Народ, немогу убить процесс. Сообщение писал не в этом форуме.
http://forum.chertenok.ru/viewtopic.php?t=7417
Если у кого есть соображения по этому поводу напишите.
А то я уже себе всю голову сломал.
Спасибо.
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 06.01.08 16:07
Думаю, из третьего кольца ты его не убьешь - прав не хватит. Только если из ring0. Пиши драйвер. Или можно попробовать найти дроф, который протектит процесс. Сайс тебе в помощь
Номер ответа: 2
Автор ответа:
MadWay
Вопросов: 2
Ответов: 4
Профиль | | #2
Добавлено: 06.01.08 17:55
Так, а если пойти другой доргой. Это приложение все-таки является службой, которая может работать и как приложение. Значит у него есть Event-ы START и STOP.
При событии STOP, являясь службой, он корректно самовыгружается. Может ему как-то команду STOP послать, когда он в режиме приложения. Вобще что делает эта кнопка "Остановка службы", а точнее как? Можно это как то проследить?
Я написал простенькую службу на VbNet, кроме срабатывания event-ов, больше ничего не добился.
Ладно, пойду еще копаться.
Номер ответа: 3
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #3
Добавлено: 07.01.08 00:46
точно код писать не буду щас. пороешься по МСДН - сам все сделаешь.
примерно так.
hSCManager = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS)
hService = OpenService(hSCManager, имя_сервиса, SERVICE_STOP)
ret = ControlService(hService, SERVICE_CONTROL_STOP, ServiceStatus)
вроде примерно так.
Номер ответа: 4
Автор ответа:
MadWay
Вопросов: 2
Ответов: 4
Профиль | | #4
Добавлено: 08.01.08 23:23
Но ведь этот код будет работать только если приложение работает в режиме службы. Приложение с которым я работаю тоже работает в режиме службы, НО она может запускать и в обычном режиме(хотя наверное это не предусмотрено разработчиками). Важно то, что в выхода из программы нет, её можно выключить только остановкой службы. Так вот, как бы мне вот это:
ret = ControlService(hService, SERVICE_CONTROL_STOP, ServiceStatus)
Только для приложения. Я знаю, что эта функция не предусмотрена. Блин ну если приложение написано как служба, значит можно в нем инициировать СОБЫТИЕ "ОСТАНОВКА СЛУЖБЫ".
Блин, я уверен что есть способ. Какая нибудь API функция, которой указал hwd или pID приложения и она в него команду STOP или START отправляет.
Я бы сам рылся бы, да времени нет. на 1С судьба меня перевела.
Парни, если кто подскажет, с меня ящик пива, если вы в моем регионе или денег на мобилу кину.
Номер ответа: 5
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #5
Добавлено: 08.01.08 23:36
Епт.... процесс защищен драйвером из нулевого кольца, вероятнее всего. каким - не знаю, это уж сам ищи. Или же процесс запущен от имени системы. Сначала надо остановить драйвер, а потом уж процесс килять.
Номер ответа: 6
Автор ответа:
BUMM ®
Вопросов: 8
Ответов: 482
Профиль | | #6
Добавлено: 10.01.08 00:55
может через shell или батник?
типа:
NET START [service]
NET STOP [service]
NET PAUSE [service]
NET CONTINUE [service]