Остановка службы Windows, когда опция остановки недоступна - PullRequest
72 голосов
/ 09 июня 2011

Я создал службу Windows и в службе в панели управления -> Инструменты администрирования -> Службы, ее статус запускается.

Я хочу остановить эту службу, но опция остановки недоступна. Как я могу запустить / остановить услугу?

Каждый раз, когда я перезагружаюсь, он останавливается, и я могу удалить его.

Ответы [ 8 ]

135 голосов
/ 09 июня 2011

Если вы запустите команду:

sc queryex <service name>

где - это имя службы, а не отображаемое имя (спулер, не спулер печати), в командной строке будет возвращен PIDпроцесс служба работает как.Возьмите этот PID и запустите

taskkill /F /PID <Service PID>

, чтобы принудительно остановить PID.Иногда, если процесс зависает при остановке графического интерфейса, вы не сможете ничего сделать со службой.

20 голосов
/ 03 июня 2015

Вы можете сделать это в одну строку (полезно для ci-сред):

taskkill /fi "Services eq SERVICE_NAME" /F

Фильтр -> Службы -> Имя_службы равно SERVICE_NAMES -> Принудительно

Источник: https://technet.microsoft.com/en-us/library/bb491009.aspx

6 голосов
/ 21 августа 2014

Используйте диспетчер задач, чтобы найти Службу и убить ее оттуда, используя Завершить задачу. Всегда помогает мне.

Если вы создали службу самостоятельно, рассмотрите возможность удаления Longзапуск операций из события OnStart, как правило, именно поэтому служба не отвечает.

6 голосов
/ 09 июня 2011

Если опция остановки неактивна, значит, ваша служба не указала, что она принимала SERVICE_ACCEPT_STOP, когда последний раз вызывала SetServiceStatus.Если вы используете .NET, вам нужно установить свойство CanStop в ServiceBase.

Конечно, если вы принимаете запросы на остановку, вылучше убедиться, что ваша служба может безопасно обрабатывать эти запросы, особенно если ваша служба все еще выполняет код запуска.

1 голос
/ 15 января 2017

Как уже упоминал Аарон, некоторые службы не принимают сообщения SERVICE_ACCEPT_STOP к моменту его разработки. И это жестко запрограммировано в исполняемый файл. Период. Workaroud будет означать, что он не будет запущен, и, поскольку вы не можете изменить его свойства, принудительно сделайте следующее:

  1. Загрузка в безопасном режиме (пользователям Windows 10 может потребоваться msconfig> boot> safe boot)
  2. Regedit в HKLM> Система> ControlSet001> Услуги
  3. Найдите вашу запись службы
  4. Измените клавишу «Пуск» на 3 (ручной запуск) или 4 (отключено)

Если вы не можете изменить запись, щелкните правой кнопкой мыши имя службы на левой панели, выберите «Разрешения», проверьте, что «Все» имеют полный доступ, и повторите шаг 4.

Не забудьте снова отключить безопасную загрузку из msconfig и перезагрузиться!

1 голос
/ 15 октября 2015

Откройте командную строку с правами администратора и введите следующие команды:

a)

tasklist

отображает список всех доступных служб.Там вы можете увидеть сервис, который хотите остановить / запустить / перезапустить.Запомните значение PID службы, которую вы хотите принудительно остановить.

b) Теперь введите

taskkill /f /PID [PID value of the service] 

и нажмите ввод.В случае успеха вы получите сообщение «УСПЕХ: Процесс с PID завершен».

Ex : taskkill /f /PID 5088

Это принудительно уничтожит замороженный сервис.Теперь вы можете вернуться в Диспетчер серверов и перезапустить службу.

0 голосов
/ 21 июня 2016

Я решил проблему с помощью следующих шагов:

  1. Откройте "services.msc" из команды / Windows RUN.

  2. Найдитеслужба (которая неактивна).

  3. Дважды щелкните по этой службе и перейдите на вкладку «Восстановление».

  4. Убедитесь, что

    • Первое действие «Сбой» выбрано как «Не предпринимать никаких действий».
    • Второе действие «Сбой» выбрано как «Не предпринимать никаких действий».
    • Действие «Последующие сбои» выбрано как «Не предпринимайте никаких действий ".

    и нажмите OK.

Теперь служба не будет пытаться перезапуститься, и вы сможете удалить неактивную службу изсписок сервисов (т.е. серый цвет исчезнет).

0 голосов
/ 08 июня 2016

У меня была такая же проблема. Если вы не являетесь администратором на компьютере, вам необходимо запускать службы в качестве администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...