“net start service” e “sc start”. Qual é a diferença?

64

Os serviços podem ser interrompidos e iniciados usando dois comandos no Shell do Prompt de Comando.

  1. net start service "algum serviço"
  2. sc start "algum serviço"

qual é a diferença entre esses comandos?

    
por Starx 26.07.2011 / 10:49

4 respostas

73

No Windows NT, ambos os comandos acessam o mesmo Service Manager. A diferença está principalmente na parte visível pelo usuário:

  • net é mais antigo - desde os dias do MS-DOS e OS / 2, na verdade.

    sc apareceu apenas no Windows NT (não sei qual versão) .

  • net só pode iniciar, parar e pausar serviços.

    sc tem controles mais avançados, pode consultar o estado, criar e excluir serviços, alterar sua configuração e segurança: sc config beep start= demand

  • net só funciona localmente.

    sc pode ser usado na rede: sc \snow start rpcapd

  • net aceita nomes de exibição: net start "Windows Firewall"

    sc sempre requer um nome de serviço: sc start SharedAccess

por 26.07.2011 / 11:08
71

A resposta do Grawity é certamente útil, mas encontrei uma diferença fundamental entre esses comandos detalhados no link . Em particular, esta página observa que esses dois comandos diferem em seu tempo : "net" é síncrono e "sc" é assíncrono.

SC sends the control to the service and then returns to the command prompt. This typically results in SC START returning the service in a state of START_PENDING. NET START will wait for the service it is starting to come to a fully started state before it returns control at the command prompt.

...

[L]ike SC START, SC STOP does not wait for the service to come to a stop and will there for often return STOP_PENDING for many service stop operations. NET STOP on the other hand will wait on the service to stop before it returns to the command prompt.

...

NET and SC have different ideas of what they consider to be success conditions. The question SC asks to determine if it was successful is, “Did I successfully send a stop control to the service?” If it did, regardless of whether the service stopped, then I satisfied the successful condition. NET asks the question, “Did the service I attempted to stop, return that it stopped successfully?” If it did, then it satisfied the condition. If it didn’t, no matter what the reason, then NET fails the successful condition

    
por 14.02.2013 / 20:36
3

Para o que vale a pena, eu achei sc start / stop para ser mais confiável do que net start / stop. Às vezes, o net start / stop fazia com que o serviço ficasse preso em um estado Inicial / Parado, enquanto isso nunca me ocorreu ainda com o sc start / stop. O sintoma inicial de início / paragem tende a ocorrer mais frequentemente se o serviço foi morto (via taskkill), e. tentando iniciar o serviço com net start após o taskkill.

    
por 26.03.2015 / 01:44
2

Deixou de dizer que se a rotina OnStart () de um serviço demorar muito, NET START envia um comando stop para o serviço e retorna o seguinte erro:

The ServiceName service is starting........

The ServiceName service could not be started.

The service did not report an error.

More help is available by typing NET HELPMSG 3534.

Isso acontece apesar de o serviço ter sido iniciado e interrompido com sucesso !!

Também encontrei este post aqui, que pode ser interessante: O serviço não pôde ser iniciado

    
por 25.08.2015 / 13:12