Как удалить службу Windows, если файлы больше не существуют?

461

Как удалить службу .NET Windows, если служебные файлы больше не существуют?

Я установил .NET Windows Service с помощью InstallUtil. С тех пор я удалил файлы, но забыл запустить

 InstallUtil /u

первый. Таким образом, служба по-прежнему указана в MMC Services.

Должен ли я войти в реестр? Или есть лучший способ?

  • 3
    Delserv
  • 2
    Вы также остановили службу в первую очередь? (-> Net Stop YourService)
Показать ещё 2 комментария
Теги:
windows-services
installer

12 ответов

950
Лучший ответ

У вас есть как минимум три варианта. Я представил их в порядке предпочтения использования.

Метод 1. Вы можете использовать инструмент SC (Sc.exe), включенный в комплект ресурсов. (входит в состав Windows 7/8)

Откройте командную строку и введите

sc delete <service-name>

Ниже приведен фрагмент справки по инструментам:

DESCRIPTION:
        SC is a command line program used for communicating with the
        NT Service Controller and services.

delete----------Deletes a service (from the registry).

Метод 2 - используйте delserv

Загрузить и использовать утилиту командной строки delserv. Это устаревший инструмент, разработанный для Windows 2000. В текущих окнах Windows XP это было заменено sc, описанным в методе 1.

Метод 3 - вручную удалить записи реестра (обратите внимание, что это приводит к ошибкам в Windows 7/8)

Службы Windows регистрируются в следующем разделе реестра.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

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

  • 23
    Метод 3, кажется, имеет неприятные последствия в Windows 7.
  • 26
    При способе 1 может возникнуть ошибка «Указанная служба не существует как установленная служба», хотя вы видите службу в консоли MMC !!! Это потому, что вы видите имя DisplayName. Вы можете LookUp фактическое имя службы в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services дерева и передать это как имя-службы.
Показать ещё 20 комментариев
127

В командной строке используйте утилиту Windows "sc.exe". Вы выполните что-то вроде этого:

sc delete <service-name>
  • 20
    Если в имени службы есть пробел, заключите его в двойные кавычки.
  • 2
    Почему я получаю [SC] OpenService Failed 5: Доступ запрещен.
Показать ещё 4 комментария
22

Заметки об использовании "sc delete" в Windows 8:

1) Откройте окно CMD с повышенными привилегиями. [Windows Key-X для вызова меню с опцией; выберите "Командная строка (Admin)".]
2) Используйте имя в скобках из списка в Службах [например, я использовал "sc delete gupdate", когда в службах он прочитал "Обновление Google (gupdate)" ]

15

Некоторые люди упоминают sc delete как ответ. Вот как я это сделал, но мне потребовалось некоторое время, чтобы найти параметр <service-name>.

Команда sc query type= service (обратите внимание, что это очень важно при форматировании, используйте цитату точно) выведет список установленных служб Windows, укомплектовывает их квалифицированным именем, которое будет использоваться с командой sc delete <service-name>.

Список довольно длинный, поэтому вы можете рассмотреть возможность вывода вывода в текстовый файл (т.е. >> C:\test.txt), а затем выполнить поиск по нему.

SERVICE_NAME используется для команды sc delete <service-name>.

  • 2
    Смотрите мой комментарий о принятом ответе. Имя службы можно быстро определить, посмотрев лист свойств для службы на панели «Службы».
  • 1
    Это было совершенно не нужно: если они отображаются в списке служб, вы можете просто открыть свойства служб, которые вы хотите удалить из списка служб, в списке служб, и он покажет вам имя службы. «Имя службы», указанное в свойствах, тоже совпадает с именем службы. :)
Показать ещё 2 комментария
10

Удалить службу Windows через реестр

Очень легко удалить службу из реестра, если вы знаете правильный путь. Вот как я это сделал:

  • Запустите Regedit или Regedt32

  • Перейдите к записи реестра "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services"

  • Найдите службу, которую вы хотите удалить и удалить. Вы можете посмотреть ключи, чтобы узнать, какие файлы использовала служба, и удалить их (при необходимости).

Удалить службу Windows через окно командной строки

В качестве альтернативы вы также можете использовать командную строку и удалить службу, используя следующую команду:

sc удалить

Вы также можете создать сервис, используя следующую команду

sc создать "MorganTechService" binpath = "C:\Program Files\MorganTechSPace\myservice.exe"

Примечание. Возможно, вам придется перезагрузить систему, чтобы обновить список в диспетчере сервисов.

7

Если вы хотите использовать инструмент для него, вы можете использовать Process Hacker

Форма для создания сервиса:

Изображение 7223

Контекстное меню службы для его удаления:

Изображение 7224

Я нахожу Process Hacker более удобным инструментом для управления процессами и службами Windows, чем собственный Taskmgr.exe для Windows. Особенно в Windows XP, где вы вообще не можете получить доступ к службам из диспетчера задач.

4

Мне нужно было переустановить мою службу tomcat, что означало сначала ее удаление. Это сработало для меня:

Start a command prompt window using run as administrator

sc query type= service >t.txt

(отредактируйте файл t.txt, выполните поиск по списку и найдите службу tomcat. Он называется Tomcat7)

sc delete Tomcat7

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

  • 0
    Если вы хотите увидеть остановленные сервисы, используйте параметр state .
3

Вы можете запустить Autoruns, что избавит вас от необходимости вручную редактировать реестр. Это особенно полезно, если у вас нет необходимых разрешений.

3

Если исходные файлы Service.InstallLog и .InstallState все еще находятся в папке, вы можете попробовать переустановить исполняемый файл для замены файлов, а затем использовать InstallUtil/u, а затем удалить программу. Это немного запутанно, но я работал в определенном экземпляре для меня.

1

Вы можете удалить свою службу Windows в командной строке, просто напишите эту команду

cd\

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 (или версия, в которой вы создали вашу службу)

installutil c:\xxx.exe(физический путь вашей службы) -d

0

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

Изображение 7225 Примечание: ShipmunkService все еще появляется после sc_delete!

Затем вы можете переустановить, и ваша служба будет работать правильно. Удачи вам всем, и сила может быть с вами.

0

1-й шаг: перейдите в каталог, в котором присутствует ваша служба.

Команда: cd c:\xxx\yyy\service

2-й шаг: введите следующую команду

Команда: C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe service.exe\u

Здесь service.exe - это ваш сервис exe, и \u удалит службу. вы увидите сообщение "Удаление завершено".

Если вы хотите установить службу, удалите \u в приведенной выше команде, которая установит вашу службу

  • 2
    ОП четко сказал, что исходные файлы были удалены.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню