Hoe sluit ik Windows af, start ik het opnieuw op of meld ik me af via een bat-bestand?

Ik'heb Remote Desktop Connection gebruikt om in een werkstation te komen. Maar in deze omgeving kan ik de aan/uit-opties in Start Menu niet gebruiken. Ik heb een alternatieve manier nodig om af te sluiten of opnieuw op te starten.

Hoe kan ik de energietoestand van mijn computer regelen via de opdrachtregel?

Oplossing

De meest voorkomende manieren om het shutdown commando te gebruiken zijn:

  • shutdown -s - Sluit af.

  • shutdown -r - Opnieuw opstarten.

  • shutdown -l - Logt uit.

  • shutdown -h - Slaapstand.

    Note: Er is een veel voorkomende valkuil waarbij gebruikers denken dat -h "help" betekent (wat het ook doet voor elk ander command-line programma... behalve shutdown.exe, waar het "winterslaap" betekent). Ze voeren dan shutdown -h uit en zetten per ongeluk hun computer uit. Kijk daar voor uit.

  • shutdown -i - "Interactieve modus". In plaats van een actie uit te voeren, wordt er een GUI dialoog getoond.

  • shutdown -a - Breekt een vorige shutdown opdracht af.

De bovenstaande commando's kunnen gecombineerd worden met deze extra opties:

  • -f - Forceert programma's om af te sluiten. Voorkomt dat het afsluitproces vastloopt.

  • -t - Stelt de tijd in tot het afsluiten. Gebruik -t 0 om onmiddellijk af te sluiten.

  • -c - Voegt een shutdown bericht toe. Het bericht komt terecht in het Event Log.

  • -y - Forceert een "yes" antwoord op alle shutdown vragen.

    Note: Deze optie is niet gedocumenteerd in de officiële documentatie. Ze werd ontdekt door deze StackOverflow gebruikers.


Ik wil ervoor zorgen dat enkele andere echt goede antwoorden ook worden vermeld samen met deze. Hier zijn ze in willekeurige volgorde.

Commentaren (7)

Als u op een machine op afstand werkt, wilt u misschien ook de -f optie toevoegen om het opnieuw opstarten te forceren. Anders kan uw sessie sluiten en een hardnekkige app kan het systeem laten hangen.

Ik gebruik dit wanneer ik een onmiddellijke reboot wil forceren:

shutdown -t 0 -r -f

Voor een meer vriendelijke "geef ze wat tijd" optie, kun je dit gebruiken:

shutdown -t 30 -r

Zoals je in het commentaar kunt zien, wordt de -f geïmpliceerd door de timeout.

Brutus 2006 is een hulpprogramma dat een GUI biedt voor deze opties.

Commentaren (3)

Oorspronkelijk antwoord: Okt. 2008

Je hebt ook al de "rundll32.exe shell32.dll" serie:

(zie update hieronder)

  • rundll32.exe user.exe,**ExitWindows** [Snelle afsluiting van Windows].

  • rundll32.exe user.exe,**ExitWindowsExec** [Windows opnieuw opstarten]

      rundll32.exe shell32.dll,**ExitWindowsEx n

waarbij n staat voor:

  • 0 - LOGOFF
  • 1 - SHUTDOWN
  • 2 - REBOOT
  • 4 - FORCE
  • 8 - POWEROFF

(kan gecombineerd worden -> 6 = 2+4 FORCE REBOOT)


Update april 2015 (6+ jaar later):

1800 INFORMATIE wijst in de comments vriendelijk op het volgende:

Gebruik rundll32.exe niet voor dit doel. Het verwacht dat de functie die je doorgaf op de opdrachtregel een zeer specifieke methodesignatuur heeft - het komt niet'overeen met de methodesignatuur van ExitWindows.

Raymond CHEN schreef:

De functiehandtekening die nodig is voor functies die worden aangeroepen door rundll32.exe is:

void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
       LPSTR pszCmdLine, int nCmdShow);

Dat heeft mensen er niet van weerhouden om rundll32 te gebruiken om willekeurige functies aan te roepen die niet zijn ontworpen om door rundll32 te worden aangeroepen, zoals user32 LockWorkStation of user32 ExitWindowsEx.

(oeps)

De eigenlijke functie handtekening voor ExitWindowsEx is:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

En om het glashelder te maken:

Rundll32 is een overblijfsel uit Windows 95, en het is sinds minstens Windows Vista deprecated omdat het in strijd is met een heleboel moderne technische richtlijnen.

Commentaren (6)