Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как программно удалить сервис так, чтобы у него не было шансов выжить?  (Прочитано 5123 раз)
0 Пользователей и 1 Гость смотрят эту тему.
xakac
Гость
« : 17-05-2006 14:18 » 

Даже если он сейчас в STATUS_RUNNING.

Код:
BOOL stopped = ::ControlService( _hService, SERVICE_CONTROL_STOP, &serviceStatus );
Так остановить не получается:
GetLastError() == ERROR_INVALID_SERVICE_CONTROL: The requested control is not valid for this service.

Если не остановив, вызвать
Код:
::DeleteService( _hService );
То сервис не удаляется, а в реестре добавляется DeleteFlag = 1.

в общем, нужно программно безусловно удалять сервис.

PS. Целевой сервис - мой драйвер с функциями: DriverEntry, DriverUnload, DispatchCreate, DispatchClose.
Записан
IRP
Постоялец

ua
Offline Offline

« Ответ #1 : 18-05-2006 07:49 » 

Для начала проверь закрыт ли описатель устройства с которым работает преложени: вызывается ли DispatchClose? Затем посмотри приходит ли DriverUnload?
и вообще сначала поиграйся с net start ... , net stop ...
а потом уже делай это програмно.
Записан
xakac
Гость
« Ответ #2 : 18-05-2006 11:23 » 

Всё, разобрался, спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines