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

36

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

Mukul Kumar
fonte
16
Tente renomear outra coisa e veja.
22614 martineau
10
@MukulKumar Alguém que quer descobrir o efeito e sabe que pode revertê-lo facilmente?
Jon Bentley
8
@theGreenCabbage: você precisa emitir shutdown -s -t 0- uma planície shutdownexibe apenas ajuda.
LawrenceC
9
Desconectar o computador deve desligá-lo, independentemente do nome de qualquer arquivo.
David Starkey
7
@ DavidStarkey: "Desligar" e "desligar" não são a mesma coisa, no entanto.
Lightness Races com Monica

Respostas:

31

É claro que sua pergunta se origina da sua resposta em https://codegolf.stackexchange.com/a/24011/18907 , em particular do kinokijufcomentário da revisão inicial da sua resposta.

Como kinokijufdito, o Windows não é Unix. No Unices e Linux, shutdownestá realmente envolvido no processo de desligamento completo. É o programa que envia mensagens de aviso regulares aos usuários que efetuaram login e que grava o /run/nologinarquivo para impedir o logon adicional pouco antes do horário de desligamento programado.

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

A ação "Desligar" no "botão liga / desliga" no menu Iniciar do Windows Explorer, a opção de menu "Desligar" no Gerenciador de Tarefas, REBOOT /Sno TCC ou no Take Command e em outros aplicativos que permitem desligar o sistema durante o desligamento. chamando diretamente uma das duas chamadas da API do Win32: InitiateSystemShutdownEx()ou ExitWindowsEx(). Eles não fazem as coisas indiretamente executando o shutdownprograma. (Isso realmente precisa de mais código do que apenas chamar a chamada da API do Win32.) O shutdownprograma, quando alguém está fazendo um desligamento local, também chama as mesmas chamadas da API do Win32.

É verdade winlogon, csrsse smssque são os programas que desligar o Windows NT. Em particular, é o winlogonque faz o trabalho principal de processar solicitações de desligamento diferido.

Leitura adicional

JdeBP
fonte
11
Você é verdadeiramente um respondedor sensato! Gostei da maneira como você se identificou com a situação real através do meu perfil.
Mukul Kumar 15/03
Observe que nos sistemas Linux, o shutdowncomando não está envolvido no processo de desligamento completo; Embora ele possa enviar mensagens de aviso ou tocar / executar / nologin, tudo o que faz em relação ao desligamento é enviar o comando apropriado para systemd, init, etc. e sair. O processo init ou seu moderno sistema de substituição realmente faz o trabalho de desligar o sistema.
Michael Hampton
Não. M. Hampton, enviar as mensagens e interromper logons é uma parte completa do procedimento de desligamento completo. Não pense que ele desapareceu magicamente com o Linux. As páginas de manual para dois Linux shutdowns estão bem na sua frente. Pensando que isso é tão errado quanto o absurdo na Introdução ao Linux no TLDP, que diz que "o UNIX não foi feito para ser desligado". O UNIX foi realmente feito para ser desligado e há muitos livros nos últimos 40 anos para profissionais do UNIX que cobrem todo o procedimento, com mensagens de aviso aos usuários como etapa 1.
JdeBP
Existem até livros para profissionais de Linux. Eu ligaria o LPIC Study Guide de Rod Smith , que tem shutdownna página 22, mas não está na minha biblioteca. Desculpe, M. Smith. (-: Minha biblioteca possui nomes como o SVR5 Reference do Coffin (a etapa de aviso aos usuários descrita nas páginas 355 e 683), um Guia do Administrador do Sistema SCO UNIX (avisos aos usuários como primeira etapa de desligamento nas páginas 52–53) e até a Fielder / Hunter UNIX Administração do Sistema (todo o capítulo 6 é sobre o desligamento, com usuários de advertência no início do capítulo) pode-se encontrar muitos mais livros para profissionais que cobrem isso..
JdeBP
55

Não.

O Explorer não chama esse comando quando você desliga no menu Iniciar.

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

LawrenceC
fonte
Na verdade, shutdown.exenem faz um desligamento normal.
kinokijuf
Cuidado com essa resposta! O Explorer não chama esse comando, mas outros processos que desligam ou reiniciam o Windows: e não é apenas 'uma maneira conveniente de fazê-lo' se o script ou a tarefa agendada for um instalador ou uma tarefa agendada de manutenção do seu sysadmin.
Nigel Heffernan 14/03
11
Isso não torna "necessário", Nilo. Veja o contexto da pergunta (que não está na pergunta, mas está na minha resposta e no que é apontado para ela) para a refutação que o questionador estava questionando e a declaração sobre o shutdownque o questionador fez originalmente. (Essas partes dos) instaladores geralmente são escritos em linguagens compiladas que apenas chamam a API do Win32, a propósito.
JdeBP
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 de como implementar um desligamento a partir de C. Além disso, você pode fazê-lo em C # usando P / Invoke (Platform Invoke). O pinvoke.net tem várias assinaturas disponíveis para uso: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html

thepip3r
fonte