¿Cómo desinstalar un servicio de Windows cuando no queda ningún ejecutable en el sistema?

166

¿Cómo desinstalo un servicio de Windows cuando no queda ningún ejecutable en el sistema? No puedo ejecutar installutil -uya que no queda ejecutable en el sistema. Todavía puedo ver una entrada para el servicio en la consola de Servicios.

La razón de este estado probablemente se deba a un problema en el paquete msi que no elimina el servicio correctamente, pero ¿cómo lo soluciono una vez que el servicio está en este estado?

Magnus Lindhe
fuente

Respuestas:

325

Debería poder desinstalarlo usando sc.exe (creo que está incluido en el Kit de recursos de Windows) ejecutando lo siguiente en un símbolo del sistema "administrador":

sc.exe delete <service name>

donde <service name>está el nombre del servicio en sí como lo ves en la consola de administración de servicios, no del exe.

Puede encontrar sc.exe en la carpeta Sistema y necesita privilegios administrativos para ejecutarse. Más información en este artículo de Microsoft KB .

Alternativamente, puede llamar directamente a la API DeleteService () . Esa forma es un poco más compleja, ya que necesita controlar el administrador de control de servicio a través de OpenSCManager (), etc., pero por otro lado, le da más control sobre lo que está sucediendo.

Treb
fuente
Hizo exactamente lo que quería y eliminó el servicio del registro. Ya no aparece en la consola de Servicios. ¡Gracias!
Magnus Lindhe 01 de
Me aparece "Acceso denegado". ¿Qué hacer a continuación?
Nick
44
Solo una nota para quien intente ejecutar el comando en el Método 1 en PowerShell: sc no es para comunicarse con el administrador de control de servicios. Es el comando Establecer contenido. Utilice sc.exe en su lugar.
Yasser Sinjab
1
Si obtiene el error 1072, asegúrese de no tener abierto el panel de control de servicios (vea esta otra pregunta )
Giles
Estaba recibiendo el siguiente error. [SC] OpenService FAILED 1060: el servicio especificado no existe como servicio instalado. Más tarde intentó lo mismo con power shell y funciona!
crazydan
24

Eliminar el servicio de Windows a través del registro

Es muy fácil eliminar un servicio del registro si conoce la ruta correcta. Así es como hice eso:

  1. Ejecute Regedit o Regedt32

  2. Vaya a la entrada del registro "HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services"

  3. Busque el servicio que desea eliminar y elimínelo. Puede mirar las teclas para saber qué archivos estaba usando el servicio y eliminarlas también (si es necesario).

Eliminar el servicio de Windows a través de la ventana de comandos

Alternativamente, también puede usar el símbolo del sistema y eliminar un servicio usando el siguiente comando:

sc eliminar

También puede crear servicio utilizando el siguiente comando

sc crear "MorganTechService" binpath = "C: \ Archivos de programa \ MorganTechSPace \ myservice.exe"

Nota: es posible que deba reiniciar el sistema para actualizar la lista en el administrador de servicios.

kombsh
fuente
3
¿Es seguro hacerlo de forma segura? ¿El "resultado final" del registro es el mismo que el "resultado final" de sc delete?
Pacerier
55
No, acabo de intentar eliminar un servicio de regedit directamente. Como resultado, ahora la entrada del servicio que quería eliminar permanece en el Servicio, mientras que la Descripción muestra: "<Error al leer la descripción. Código de error: 2>"
GJ.
11

encontrado aquí

Acabo de probar en Windows XP, funcionó

computadora local: sc \\. eliminar [nombre del servicio]

  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
Fredou
fuente
10

Aquí está el script de powershell para eliminar un servicio foo

$foo= Get-WmiObject -Class Win32_Service -Filter "Name='foo'"
$foo.delete()
Nima Soroush
fuente
9

Mi forma favorita de hacerlo es utilizar la aplicación Sysinternals Autoruns . Simplemente seleccione el servicio y presione eliminar.

Thomas Bratt
fuente
¿Por qué no simplemente usar sc delete?
Pacerier
3

Cree una copia de los ejecutables del mismo servicio y péguelo en la misma ruta del servicio existente y luego desinstálelo.

Samiksha
fuente
Esa es una buena sugerencia. Si eso no funciona, es posible que deba reinstalar, ejecutar installutil -u y luego desinstalar
wcm
¿tenemos que crear la copia del mismo exe o cambiar el nombre de cualquier otro archivo funcionaría bien?
Imran Rizvi
@ Samiksha, ¿pensé que dijo que no tenía " una copia de ejecutables "?
Pacerier