"servicio net start" y "sc start". ¿Cuál es la diferencia?

"servicio net start" y "sc start". ¿Cuál es la diferencia?

Los servicios se pueden detener e iniciar usando dos comandos en el símbolo del sistema Shell.

  1. servicio net start "algún servicio"
  2. sc inicia "algún servicio"

¿Cuál es la diferencia entre estos comandos?

Respuesta1

En Windows NT, ambos comandos acceden al mismo Administrador de servicios. La diferencia está principalmente en la parte visible para el usuario:

  • netes más antiguo; de hecho, de la época de MS-DOS y OS/2.

    scsólo apareció con Windows NT(no estoy seguro de qué versión).

  • netSólo puede iniciar, detener y pausar servicios.

    sctiene controles más avanzados, puede consultar estado, crear y eliminar servicios, cambiar su configuración y seguridad:sc config beep start= demand

  • netsolo funciona localmente.

    scSe puede utilizar a través de la red:sc \\snow start rpcapd

  • netacepta nombres para mostrar:net start "Windows Firewall"

    scsiempre requiere un nombre de servicio:sc start SharedAccess

Respuesta2

La respuesta de Grawity es ciertamente útil, pero encontré una diferencia fundamental entre estos comandos detallados enhttp://cbfive.com/command-line-service-management-net-v-sc/. En particular, esta página señala que estos dos comandos difieren en sumomento:"net" es sincrónico y "sc" es asincrónico.

SC envía el control al servicio y luego regresa al símbolo del sistema. Esto normalmente da como resultado que SC START devuelva el servicio en un estado de START_PENDING. NET START esperará a que el servicio que está comenzando llegue a un estado completamente iniciado antes de regresarcontrol en el símbolo del sistema.

...

[Como] COMIENZO SC,SC STOP no espera a que se detenga el servicio y a menudo devolverá STOP_PENDING para muchas operaciones de parada de servicio. NET STOP, por otro lado, esperará a que se detenga el servicio. antes de regresar al símbolo del sistema.

...

NET y SC tienen ideas diferentes sobre lo que consideran condiciones de éxito. La pregunta que hace SC para determinar si fue exitoso es: "¿Envié exitosamente un control de detención al servicio?" Si así fue, independientemente de si el servicio se detuvo, entonces cumplí la condición exitosa. NET hace la pregunta: "¿El servicio que intenté detener devolvió que se detuvo exitosamente?" Si así fuera, entonces cumplía la condición. Si no fue así, sin importar el motivo, NET no cumple la condición exitosa

Respuesta3

Por lo que vale, he descubierto que sc start/stop es más confiable que net start/stop. A veces, net start/stop hacía que el servicio se atascara en un estado de Inicio/Detención, mientras que esto nunca me había ocurrido todavía con sc start/stop. El síntoma de inicio/detención de red tiende a ocurrir con más frecuencia si el servicio fue cancelado (mediante taskkill), por ejemplo, al intentar iniciar el servicio con net start después de taskkill.

Respuesta4

Queda decir que si la rutina OnStart() de un servicio tarda demasiado, NET STARTenvía un comando de parada al servicio y devuelve el siguiente error:

El servicio ServiceName se está iniciando...

No se pudo iniciar el servicio ServiceName.

El servicio no informó de un error.

Hay más ayuda disponible escribiendo NET HELPMSG 3534.

¡¡Esto sucede aunque el servicio se haya iniciado y detenido exitosamente!!

También encontré esta publicación aquí, que podría ser interesante: No se pudo iniciar el servicio

información relacionada