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

570

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

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

 InstallUtil /u

первый. Так что сервис все еще указан в Сервисах MMC.

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

Томас Йесперсен
источник
3
Delserv
Том Кидд
2
Вы также остановили службу в первую очередь? (-> net stop yourservice)
Jos
Очень тесно связанная тема здесь .
RBT
этот сайт поможет мне, и я надеюсь, что поможет вам в этой проблеме howtogeek.com/howto/windows-vista/…
Ахмед Эльбендары

Ответы:

1130

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

Способ 1 - Вы можете использовать инструмент SC (Sc.exe), включенный в Resource Kit. (входит в 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. В текущих версиях Window XP это было заменено sc, описанным в методе 1.

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

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

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

Хорхе Феррейра
источник
23
Метод 3, кажется, имеет
неприятные последствия в
29
При способе 1 может возникнуть ошибка «Указанная служба не существует как установленная служба», хотя вы видите службу в консоли MMC !!! Это потому, что вы видите имя DisplayName. Вы можете LookUp фактическое имя службы в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services дерева и передать , что в качестве имени-сервиса.
Дениспир
9
Метод 3 для меня тоже <Failed to Read Description. Error Code: 2>
дал о себе знать
27
обратите внимание, будьте осторожны, если вы используете powershell с sc - он переопределяет приложение с помощью своего командлета set-content, а если вы запускаете sc delete blah, то он молча завершается сбоем
JonnyRaa
10
ПРИМЕЧАНИЕ. Вы должны перезагрузить компьютер после выполнения метода 3! Тогда посмотрите на список Сервисов; это, вероятно, прошло Если он все еще находится в списке, просто выполните Способ 1, чтобы удалить его из этого списка.
Восток из ниоткуда
170

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

sc delete <service-name>
Дин Хилл
источник
21
Если в имени службы есть пробел, заключите его в двойные кавычки.
Geoffc
2
Почему я получаю [SC] OpenService Failed 5: Доступ запрещен.
Адриан Энрикес
11
@AdrianEnriquez, запуск cmd.exe в качестве администратора исправил это для меня.
складной салат
3
В Windows 8 после использования команды сервис отображается с отключенным статусом в списке MMC. Перезапуск удалит службу из списка.
Райан
1
Есть ли способ повысить привилегии для этого? Я все еще получаю «Доступ запрещен» после ввода вышеуказанной команды
Ник
27

Примечания по использованию "sc delete" в Windows 8:

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

Майкл
источник
22

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

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

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

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

Робин Френч
источник
2
Смотрите мой комментарий о принятом ответе. Имя службы можно быстро определить, посмотрев лист свойств для службы на панели «Службы».
Donperk
2
Это было совершенно не нужно: если они отображаются в списке служб, вы можете просто открыть свойства служб, которые вы хотите удалить из списка служб, в списке служб, и он покажет вам имя службы. «Имя службы», указанное в свойствах, тоже совпадает с именем службы. :)
neminem
2
Да, я знаю, что вы можете получить имя другим способом. Я добавил это, потому что мне было трудно выяснить, какое из имен использовать в команде. Я видел имя, указанное в свойствах службы, но в то время не знал, какое имя использовать в команде. Использование командной строки было для меня хорошим способом выгрузить все установленные сервисы, включая <service_name> для удаления. У меня была пара сервисов, которые нуждались в этом, поэтому мне было проще выгрузить весь список в файл, чтобы я мог получить к ним доступ, не просматривая его в оснастке служб.
Робин Френч
Вы можете просто запустить, так sc queryкак это по умолчанию type= service.
Ян Кемп
11

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

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

  1. Запустите Regedit или Regedt32

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

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

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

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

sc delete

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

sc create "MorganTechService" binpath = "C: \ Program Files \ MorganTechSPace \ myservice.exe"

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

kombsh
источник
9

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

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

Process Hacker Create Service

Контекстное меню на сервисе для его удаления:

Process Hacker Delete Service

Я считаю 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

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

user1208639
источник
Если вы хотите увидеть остановленные сервисы, используйте stateпараметр.
Гарри Джонстон
3

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

ja928
источник
3

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

загар
источник
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 в приведенной выше команде, которая установит вашу службу

Sree
источник
3
ОП четко сказал, что исходные файлы были удалены.
ПОПРАВИТЬ
0

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

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

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

Барклай
источник
0

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

cd\                                                                   

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319(or version in which you developed your service)                                           

installutil c:\\xxx.exe(physical path of your service) -d
Амарджит Сингх Чаудхари
источник
0

-Windows+r открыть cmd.

-sc YourSeviceName этот код удалить ваш сервис.

-Uninstal "YourService Path" этот код удалить ваш сервис.

Айсе Озбек
источник