Saltar al contenido

Cómo agregar dependencia en un servicio de Windows DESPUÉS de instalar el servicio

Estate atento ya que en este artículo vas a encontrar la contestación que buscas.Esta crónica fue analizado por nuestros especialistas para asegurar la calidad y exactitud de nuestro post.

Solución:

Solución 1:

Esto también se puede hacer a través de un símbolo del sistema elevado usando el sc dominio. La sintaxis es:

sc config [service name] depend= 

Nota: Hay un espacio después el signo igual, y hay no uno antes de eso.

Advertencia: depend= el parámetro será Sobrescribir lista de dependencias existentes, no anexar. Entonces, por ejemplo, si ServiceA ya depende de ServiceB y ServiceC, si ejecuta depend= ServiceDServiceA ahora dependerá solamente en Servicio D. (¡Gracias Matt!)

Ejemplos

Dependencia de otro servicio:

sc config ServiceA depend= ServiceB

Arriba significa que ServiceA no comenzará hasta que ServiceB haya comenzado. Si detiene ServiceB, ServiceA se detendrá automáticamente.

Dependencia de muchos otros servicios:

sc config ServiceA depend= ServiceB/ServiceC/ServiceD/"Service Name With Spaces"

Lo anterior significa que ServiceA no se iniciará hasta que ServiceB, ServiceC y ServiceD se hayan iniciado. Si detiene cualquiera de ServiceB, ServiceC o ServiceD, ServiceA se detendrá automáticamente.

Para eliminar todas las dependencias:

sc config ServiceA depend= /

Para enumerar las dependencias actuales:

sc qc ServiceA

Solución 2:

Puede agregar dependencias de servicio agregando el valor “DependOnService” al servicio en el registro usando el regedit comando, los servicios se pueden encontrar en HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices. Los detalles se pueden encontrar en el artículo 193888 de MS KB, del cual lo siguiente es un extracto de:

Para crear una nueva dependencia, seleccione la subclave que representa el servicio que desea retrasar, haga clic en Editar y luego haga clic en Agregar valor. Cree un nuevo nombre de valor “DependOnService” (sin las comillas) con un tipo de datos de REG_MULTI_SZ y luego haga clic en Aceptar. Cuando aparezca el cuadro de diálogo Datos, escriba el nombre o los nombres de los servicios que prefiere iniciar antes de este servicio con una entrada para cada línea y luego haga clic en Aceptar.


Solución 3:

Estaba buscando un método puramente PowerShell (sin regedit o sc.exe) que pueda funcionar en 2008R2/Win7 y posteriores, y se me ocurrió esto:

Una fácil es hacer el regedit con PowerShell:

Set-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetServicesLanmanWorkstation' -Name DependOnService -Value @('Bowser','MRxSmb20','NSI')

O, usando WMI:

$DependsOn = @('Bowser','MRxSmb20','NSI','') #keep the empty array element at end
$svc = Get-WmiObject win32_Service -filter "Name='LanmanWorkstation'"
$svc.Change($null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$DependsOn)

El método Change de la clase Win32_Service ayudó a señalar una solución:

uint32 Change(
[in] string  DisplayName,
[in] string  PathName,
[in] uint32  ServiceType,
[in] uint32  ErrorControl,
[in] string  StartMode,
[in] boolean DesktopInteract,
[in] string  StartName,
[in] string  StartPassword,
[in] string  LoadOrderGroup,
[in] string  LoadOrderGroupDependencies[],
[in] string  ServiceDependencies[]
);

Reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *