¿Cómo desinstalo un servicio de Windows si los archivos ya no existen?

570

¿Cómo desinstalo un servicio .NET de Windows, si los archivos de servicio ya no existen?

Instalé un servicio de Windows .NET usando InstallUtil. Desde entonces eliminé los archivos pero olvidé ejecutar

 InstallUtil /u

primero. Por lo tanto, el servicio todavía figura en la MMC de servicios.

¿Tengo que ingresar al registro? ¿O hay un mejor camino?

Thomas Jespersen
fuente
3
Delserv
Tom Kidd
2
¿También detuvo el servicio primero? (-> net stop yourervice)
Jos
Un hilo muy relacionado aquí .
RBT
este sitio me ayuda y espero que te ayude en este problema howtogeek.com/howto/windows-vista/…
Ahmed Elbendary

Respuestas:

1130

Tienes al menos tres opciones. Los he presentado en orden de preferencia de uso.

Método 1 : puede usar la herramienta SC (Sc.exe) incluida en el Kit de recursos. (incluido con Windows 7/8)

Abra un símbolo del sistema e ingrese

sc delete <service-name>

El fragmento de ayuda de la herramienta sigue:

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

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

Método 2 - use delserv

Descargue y use la utilidad de línea de comandos delserv. Esta es una herramienta heredada desarrollada para Windows 2000. En los cuadros actuales de Windows XP, esto fue reemplazado por sc descrito en el método 1.

Método 3 : eliminar manualmente las entradas del registro (tenga en cuenta que esto falla en Windows 7/8)

Los servicios de Windows están registrados con la siguiente clave de registro.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Busque la subclave con el nombre del servicio debajo de la clave referida y elimínela. (y es posible que deba reiniciar para eliminar completamente el servicio de la lista de Servicios)

Jorge Ferreira
fuente
23
El método 3 parece ser contraproducente en Windows 7.
rmiesen
29
En el método 1, puede experimentar el error "El servicio especificado no existe como un servicio instalado", aunque vea el servicio en el MMC. Esto se debe a que el nombre que ve es DisplayName. Usted puede buscar el nombre real del servicio en HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services árbol y pasar que como nombre de servicio.
denispyr
99
El método 3 también fue contraproducente para mí en Windows 7. El servicio ahora está disponible con Descripción<Failed to Read Description. Error Code: 2>
Zugwalt
27
tenga en cuenta que si usa powershell con sc: anula la aplicación con su cmdlet set-content y si ejecuta sc delete blah, falla en silencio
JonnyRaa
10
NOTA: ¡Debe reiniciar su computadora después de hacer el Método 3! Luego mire la lista de Servicios; Probablemente se ha ido ahora. Si todavía está en la lista, simplemente realice el Método 1 para eliminarlo de esa lista.
este de la nada
170

Desde el símbolo del sistema, use la utilidad de Windows "sc.exe". Ejecutarás algo como esto:

sc delete <service-name>
Dean Hill
fuente
21
Si hay un espacio en el nombre del servicio, escríbalo entre comillas dobles.
geoffc
2
¿Por qué recibo [SC] OpenService Failed 5: acceso denegado?
Adrián Enríquez
11
@AdrianEnriquez, ejecutando cmd.exe como administrador me arregló esto.
foldlettuce
3
En Windows 8 después de usar el comando, el servicio aparece con estado deshabilitado en la lista MMC. Un reinicio eliminará el servicio de la lista.
Ryan
1
¿Hay alguna manera de elevar los privilegios para esto? Todavía obtengo "Acceso denegado" después de escribir el comando anterior
Nick
27

Notas sobre el uso de "sc delete" en Windows 8:

1) Abra una ventana CMD con privilegios elevados. [Windows Key-X para abrir un menú con la opción; seleccione "Símbolo del sistema (Administrador)".]
2) Use el nombre entre paréntesis de la lista en Servicios [por ejemplo, usé "sc delete gupdate" cuando, en Servicios, decía "Google Update (gupdate)"]

Miguel
fuente
22

Algunas personas mencionan sc deletecomo respuesta. Así es como lo hice, pero me tomó un tiempo encontrar el <service-name>parámetro.

El comando sc query type= service(nota, es muy particular con el formateo, el espacio antes del "servicio" es necesario) generará una lista de los servicios de Windows instalados, completo con su nombre calificado para ser usado con el sc delete <service-name>comando.

La lista es bastante larga, por lo que puede considerar canalizar el resultado a un archivo de texto (es decir >> C:\test.txt) y luego buscarlo.

El SERVICE_NAMEes el que se usa con el sc delete <service-name>comando.

Robin French
fuente
2
Vea mi comentario sobre la respuesta aceptada. El nombre del servicio se puede determinar rápidamente mirando la hoja de Propiedades del servicio en el panel Servicios.
donperk
2
Eso fue totalmente innecesario: si aparecen en la lista de servicios, puede abrir las propiedades de los servicios que desea eliminar de la lista de servicios, en la lista de servicios, y le mostrará el nombre del servicio. El "nombre de servicio" que figura en las propiedades también tiene el mismo nombre de servicio. :)
neminem
2
Sí, sé que puedes llegar al nombre por otros medios. Agregué esto porque tuve problemas para averiguar cuál de los nombres usar en el comando. Había visto el nombre que figuraba en las propiedades del servicio, pero no sabía en ese momento cuál era el nombre que se usaría en el comando. Usar la línea de comando fue una buena manera de deshacerme de todos los servicios instalados, incluido el <nombre de servicio> para usar para eliminar. Tenía un par de servicios que necesitaban esto, por lo que me fue más fácil volcar la lista completa para archivarla y poder acceder a ellos sin tener que buscarlos en el complemento de servicios.
Robin French el
Simplemente puede ejecutar sc querycomo está predeterminado type= service.
Ian Kemp
11

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
9

Si desea utilizar una herramienta para ello, puede utilizar Process Hacker

Formulario para crear el servicio:

Servicio de creación de Process Hacker

Menú contextual en un servicio para eliminarlo:

Servicio de eliminación de hackers de procesos

Encuentro que Process Hacker es una herramienta más conveniente para administrar los procesos y servicios de Windows que el propio Taskmgr.exe de Windows. Especialmente en Windows XP, donde no puede acceder a los servicios desde el administrador de tareas.

Mike de Klerk
fuente
4

Necesitaba reinstalar mi servicio Tomcat, lo que significaba eliminarlo primero. Esto funcionó para mí:

Start a command prompt window using run as administrator

sc query type= service >t.txt

(edite el archivo t.txt, busque en la lista y encuentre el servicio tomcat. Se llama Tomcat7)

sc delete Tomcat7

SIN EMBARGO, el comando de consulta no funcionó la primera vez, porque el servicio tomcat no se estaba ejecutando. Parece que solo enumera los servicios que se están ejecutando. Tuve que iniciar el servicio y ejecutar el comando de consulta nuevamente.

usuario1208639
fuente
Si desea ver los servicios detenidos, use el stateparámetro
Harry Johnston
3

Si los archivos originales Service .InstallLog y .InstallState todavía están en la carpeta, puede intentar reinstalar el ejecutable para reemplazar los archivos, luego use InstallUtil / u, luego desinstale el programa. Es un poco complicado, pero funcionó en una instancia particular para mí.

ja928
fuente
3

Puede intentar ejecutar Autoruns , lo que le evitaría tener que editar el registro a mano. Esto es especialmente útil cuando no tiene los permisos necesarios.

Bronceado
fuente
0

Primer paso: muévase al directorio donde está presente su servicio

Comando: cd c: \ xxx \ aaa \ service

2do Paso: Ingrese el siguiente comando

Comando: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe service.exe \ u

Aquí service.exe es su exe de servicio y lo desinstalará. verá el mensaje "La desinstalación se ha completado".

Si desea instalar un servicio, elimine \ u en el comando anterior que instalará su servicio

Sree
fuente
3
El OP dijo claramente que los archivos originales han sido eliminados.
AFract
0

Descubrimos que incluso si ejecuta sc_delete, puede haber una entrada restante en el registro para su servicio, de modo que reinstalar el servicio da como resultado un conjunto corrupto de entradas de registro (no coinciden). Lo que hicimos fue regediteliminar y eliminar esta entrada sobrante a mano.

Nota: ¡ShipmunkService sigue apareciendo después de sc_delete!

Luego puede reinstalar y su servicio se ejecutará correctamente. Mucha suerte a todos, y que la fuerza esté con ustedes.

Barclay
fuente
0

Puede desinstalar su servicio de Windows mediante el símbolo del sistema también simplemente escriba este comando

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
Amarjit Singh Chaudhary
fuente
0

-Windows+r cmd abierto

-sc YourSeviceName Este código elimina su servicio.

-Uninstal "YourService Path" este código desinstala tu servicio.

Ayse Özbek
fuente