Intento eliminar un servicio de Windows sc delete <service name>
y encuentro el siguiente error:
[SC] DeleteService FALLÓ 1072:
El servicio especificado se ha marcado para su eliminación.
Lo que ya hice:
Detuve el servicio, obviamente. El
sc queryex "<service name>"
da el siguiente resultado:SERVICE_NAME: Stub service TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED WIN32_EXIT_CODE : 1067 (0x42b) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 0 FLAGS :
Se aseguró de que Microsoft Management Console esté cerrado (
taskkill /F /IM mmc.exe
),-
Debido a esta eliminación,
services.msc
aún muestra el servicio (con un nombre, pero sin estado o tipo de inicio), pero la descripción es "<Error al leer la descripción. Código de error: 2> ". Al intentar ver las propiedades, "El sistema no puede encontrar el archivo especificado". se muestra cinco veces.
El problema persiste.
¿Cuál es el próximo paso?
windows-services
Arseni Mourzenko
fuente
fuente
Respuestas:
Puede haber varias causas que conducen a que el servicio se atasque en "marcado para eliminación".
Se abre el Explorador de procesos de SysInternals . Cerrarlo debería conducir a la eliminación automática del servicio.
El Administrador de tareas está abierto .
Se abre Microsoft Management Console (MMC) . Para asegurarse de que todas las instancias estén cerradas, ejecute
taskkill /F /IM mmc.exe
.La consola de servicios está abierta . Esto es lo mismo que el punto anterior, ya que MMC aloja la consola de Servicios.
El visor de eventos está abierto . De nuevo, esto es lo mismo que el tercer punto.
La clave HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ {service name} existe .
Alguien más ha iniciado sesión en el servidor y tiene abierta una de las aplicaciones mencionadas anteriormente.
Una instancia de Visual Studio utilizada para depurar el servicio está abierta.
fuente
Esto también puede ser causado al dejar abierta la consola de Servicios. Windows no eliminará el servicio hasta que se cierre.
fuente
Tuve el mismo problema, finalmente decido matar el proceso de servicio.
para ello intente los siguientes pasos:
obtener la identificación del proceso de servicio con
sc queryex <service name>
proceso de matar con
taskkill /F /PID <Service PID>
fuente
En mi caso funcionó después de cerrar el
Services
. Compruebe siServices.msc
está abierto, en caso afirmativo, ciérrelo y compruebe si se encuentra algún proceso de servicioTask Manager
.fuente
Eso significa que el servicio todavía aparece como deshabilitado en services.msc. Simplemente cierre services.msc y vuelva a abrir como administrador ... El servicio no aparecerá en la lista. Ahora, instale el servicio usando el comando,
installutil "ruta de servicio"
fuente
Al eliminar las claves de registro como se sugirió anteriormente, mi servicio se atascó en el estado de detención. El siguiente procedimiento me funcionó:
abra el administrador de tareas> seleccione la pestaña servicios> seleccione el servicio> haga clic derecho y seleccione "ir al proceso"> haga clic derecho en el proceso y seleccione Finalizar proceso
El servicio debería desaparecer después de eso
fuente
Descubrí una cosa más para verificar, mira en el Administrador de tareas, si otros usuarios están conectados a este cuadro, incluso si están 'desconectados', debes cerrar la sesión para que el servicio finalmente se elimine.
fuente
Parece que en las versiones de Windows posteriores a Windows 7 (sin verificar, pero según la experiencia más reciente con Windows Server 2012 R2), el Administrador de control de servicios (SCM) es más estricto.
Mientras que en Windows 7 solo genera otro proceso, ahora está verificando si el proceso de servicio aún está disponible y puede devolver ERROR_SERVICE_MARKED_FOR_DELETE (1072) para cualquier llamada posterior a CreateService / DeleteService, incluso si el servicio parece estar detenido.
Estoy hablando del código de la API de Windows aquí, pero quiero describir claramente lo que está sucediendo, por lo que esta secuencia puede conducir al error mencionado:
La razón por la que un proceso de servicio aún existe después de que ya ha informado su estado SERVICE_STOPPED no es sorprendente. Es un proceso regular, cuyo hilo principal está 'atascado' en su llamada al
StartServiceCtrlDispatcher
API, por lo que primero reacciona a una acción de detener el control, pero luego tiene que ejecutar la secuencia de código restante.Es desafortunado que SCM / OS no esté manejando esto adecuadamente para nosotros. Una solución programática es un poco simple y precisa: obtenga el identificador de proceso del ejecutable del servicio antes de detener el servicio, luego espere a que se señale este identificador.
Si se aborda el problema desde una perspectiva de administración del sistema, la solución también es esperar a que el proceso de servicio desaparezca por completo.
fuente
Esto es lo que funcionó para mí: - Me encontré con el mismo problema: mi servicio estaba atascado en 'marcado para eliminación'. - Abrí services.msc. Mi servicio apareció como en ejecución, aunque ya estaba desinstalado. - Hice clic en Detener Recibí un mensaje de error, diciendo que el servicio no está en un estado para recibir mensajes de control. Sin embargo, el servicio fue detenido. - Servicios cerrados.msc. - Reapertura de services.msc. - El servicio desapareció (ya no aparece en la lista de servicios).
(El entorno era Windows 7.)
fuente
En mi caso, ejecuto
taskkill /f /im dongleserver.exe
, dondedongleserver.exe
está el archivo exe de mi programa?Entonces puedo reinstalar mi programa ya.
fuente
En mi caso, fue causado por una excepción no controlada al crear la fuente eventLog. Use try catch para señalar la causa.
fuente
Cerrar todas las ventanas que estaban abiertas actualmente y luego ejecutar el siguiente comando me resolvió el problema:
fuente
Cerrar la consola de servicios como lo sugieren algunas de las respuestas aquí me permitió eliminar el servicio. En mi caso, esto fue solo una solución a corto plazo, ya que todas las reinstalaciones posteriores y la eliminación del servicio requerirían que tome estos pasos adicionales. Al revisar mi archivo web.config, se descubrió que había un error que, una vez solucionado, me permitía eliminar fácilmente el servicio sin el cierre adicional del paso de la consola de servicios.
fuente
Esto funciona para mi.
El árbol de proceso finalizará el proceso y todos los procesos creados por el proceso.
Luego, puede reinstalar el servicio.
fuente
En mi caso, el nombre del servicio era 'Monitor', que también es utilizado por un servicio de Windows llamado 'Monitor', cuando intenté actualizar mis servicios, intenté desinstalarlos, el instalador intentó eliminar el servicio de Windows 'Monitor' que no se pudo, y la instalación siempre fue revertida.
Terminé cambiando el nombre de mi servicio a otra cosa
fuente
Si los pasos proporcionados por @MainMa no funcionaron, siga los siguientes pasos
Paso 1 Intenta eliminar el proceso desde el administrador de tareas de Windows o usando taskkill / F / PID. Puede encontrar pid del proceso mediante el comando 'sc queryex'. Pruebe el siguiente paso si aún no puede desinstalarlo.
Paso 2 Si arriba
Ejecute Autoruns para Windows Busque servicio por nombre y elimine resultados.
fuente
La razón principal del error es que el proceso no se detiene. para resolverlo, inicie el administrador de tareas, vaya a los servicios y vea si aún puede ver su servicio, luego vaya al proceso de ese servicio y finalice el proceso. Que el problema se resolverá por completo.
fuente
Estaba teniendo este problema cuando estaba usando Application Verifier para verificar mi servicio ganador. Incluso después de cerrar App Ver, mi servicio fue bloqueado para su eliminación. Solo eliminar el servicio de App Ver resolvió el problema y el servicio se eliminó de inmediato. Parece que todavía hay algún proceso usando su servicio después de que intentó eliminar uno.
fuente
pasos a seguir:
paso-1 ir a la ubicación C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
comando de ejecución del paso 2 : installutil / u full-path / servicename.exe
paso 3 cierre el panel de servicios y vuelva a abrirlo
comando de ejecución del paso 4 : installutil full-path / servicename.exe
fuente
Lo más probable es que el servicio de eliminación falle porque
lanzar error al detener un servicio. envolver cosas dentro de una captura de prueba evitará la marca de error de eliminación
}
fuente
A veces, esto puede suceder durante la eliminación del servicio a través del script de sesión remota de PowerShell, especialmente cuando intenta eliminar el servicio varias veces. En este caso, intente recrear una sesión antes de la eliminación:
fuente