O shutdown.exe é necessário para desligar o Windows?

36

O arquivo C:\windows\system32\shutdown.exe é necessário para desligar ou reiniciar o Windows?

    
por Mukul Kumar 14.03.2014 / 03:48

4 respostas

31

A sua pergunta é originária da sua resposta no link , em particular do comentário de kinokijuf sobre a revisão inicial da sua resposta.

Como kinokijuf disse, o Windows não é Unix. No Unices e Linux, shutdown está de fato envolvido no processo de desligamento completo. É o programa que envia mensagens de aviso regulares para os usuários que efetuaram login e que grava o arquivo /run/nologin para evitar mais logon um pouco antes do horário de encerramento programado.

No Windows NT, esse não é o caso.

A ação "Encerrar" no "botão liga / desliga" no menu Iniciar do Windows Explorer, na opção de menu "Encerrar" no Gerenciador de Tarefas, REBOOT /S no TCC ou no Take Command e em outros aplicativos que permitem a você fechar o sistema desligado inicia o desligamento chamando diretamente uma das duas chamadas da API do Win32: InitiateSystemShutdownEx() ou ExitWindowsEx() . Eles não fazem coisas indiretamente executando o programa shutdown . (Isso realmente precisa de mais código para fazer do que apenas chamar a chamada da API do Win32.) O programa shutdown , quando um está fazendo um desligamento local, chama essas mesmas chamadas de API do Win32 também.

Na verdade, são winlogon , csrss e smss que são os programas que desligam o Windows NT. Em particular, é winlogon que faz o trabalho principal de processar pedidos de encerramento adiados.

Leitura adicional

  • Jonathan de Boyne Pollard (2006). O processo de encerramento do Windows NT 6 . Respostas frequentemente dadas.
  • shutdown . Páginas de manual do FreeBSD 9.2 . 2013-03-19.
  • shutdown . systemd páginas de manual . 2013. Freedesktop.org.
  • shutdown . upstart páginas de manual . 2009. Canonical Ltd.
  • InitiateSystemShutdownEx . MSDN. Corporação Microsoft.
  • ExitWindowsEx . MSDN. Corporação Microsoft.
  • REBOOT . Tome a ajuda do comando / TCC. Software JP.
por 14.03.2014 / 20:26
55

Não.

O Explorer não chama este comando quando você desliga do menu Iniciar.

Desligar o sistema é possível com uma chamada da API do Win32 (a resposta do @ JdeBP fornece grandes detalhes sobre isso, se estiver interessado). O comando é apenas uma maneira conveniente de fazer isso a partir de um script, tarefa agendada ou da caixa de diálogo Executar.

    
por 14.03.2014 / 04:50
8

Conforme explicado pelo ultrasawblade (upvote), o desligamento do sistema é uma chamada da API do Win32 para: ExitWindowsEx

O link também tem um exemplo sobre como implementar um desligamento a partir de C. Além disso, você pode fazer isso a partir de C # usando P / Invoke (Platform Invoke). pinvoke.net tem um monte de assinaturas disponíveis para uso: link

    
por 14.03.2014 / 18:41
4

Não é necessário. shutdown.exe é apenas um utilitário para desligar um computador local ou remoto. Parece que shutdown.exe usa a API nativa 's NtShutdownsystem . Enquanto o Windows usa ExitWindowsEx (< href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa376881%28v=vs.85%29.aspx"> como já foi mencionado ).

    
por 14.03.2014 / 20:48

Tags