Как удалить службу Windows, если в системе не осталось исполняемого файла? - PullRequest
157 голосов
/ 01 декабря 2008

Как удалить службу Windows, если в системе не осталось исполняемого файла для нее? Я не могу запустить installutil -u, так как в системе не осталось исполняемого файла. Я все еще вижу запись для службы в консоли служб.

Причина этого состояния, вероятно, связана с проблемой в пакете msi, которая неправильно удаляет службу, но как я могу это исправить, когда служба находится в этом состоянии?

Ответы [ 7 ]

310 голосов
/ 01 декабря 2008

Вы должны иметь возможность удалить его с помощью sc.exe (я думаю, что он включен в Windows Resource Kit), выполнив в командной строке «Администратор» следующее:

sc.exe delete <service name>

где <service name> - это имя самой службы, как вы видите ее в консоли управления службами, а не exe.

Файл sc.exe находится в системной папке, и для его запуска требуются права администратора. Дополнительная информация в этой статье Microsoft KB .

Кроме того, вы можете напрямую вызвать DeleteService () api. Этот способ немного сложнее, поскольку вам нужно получить указатель на диспетчер управления службами через OpenSCManager () и т. Д., Но с другой стороны, он дает вам больше контроля над происходящим. 1015 *

24 голосов
/ 23 сентября 2013

Удаление службы 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"

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

11 голосов
/ 01 декабря 2008

найдено здесь

Я только что попробовал на Windows XP, он работал

локальный компьютер: sc \\. удалить [service-name]

  Deleting services in Windows Server 2003

  We can use sc.exe in the Windows Server 2003 to control services, create services and delete services. Since some people thought they must directly modify the registry to delete a service, I would like to share how to use sc.exe to delete a service without directly modifying the registry so that decreased the possibility for system failures.

  To delete a service: 

  Click “start“ - “run“, and then enter “cmd“ to open Microsoft Command Console.

  Enter command:

  sc servername delete servicename

  For instance, sc \\dc delete myservice

  (Note: In this example, dc is my Domain Controller Server name, which is not the local machine, myservice is the name of the service I want to delete on the DC server.)

  Below is the official help of all sc functions:

  DESCRIPTION:
    SC is a command line program used for communicating with the
    NT Service Controller and services. 
  USAGE:
          sc
9 голосов
/ 04 августа 2016

Вот скрипт powershell для удаления службы foo

$foo= Get-WmiObject -Class Win32_Service -Filter "Name='foo'"
$foo.delete()
9 голосов
/ 02 декабря 2008

Мой любимый способ сделать это - использовать приложение Sysinternals Autoruns . Просто выберите услугу и нажмите «Удалить».

3 голосов
/ 01 декабря 2008

Создайте копию исполняемых файлов той же службы и вставьте ее в тот же путь существующей службы, а затем удалите.

1 голос
/ 11 июля 2018

Я бы использовал PowerShell для этого

Remove-Service -Name "TestService"

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-service

...