Donnerstag, 27. Mai 2010

Computer herunterfahren

Um den Computer durch ein C# - Programm herunterzufahren, rufen wir einfach das Windows eigene Programm "shutdown" auf.
Denn gibt man in der Eingabeaufforderung (cmd.exe) diesen Befehl ein, z.B. mit den Parametern shutdown -s -t 60, wird der PC nach Ablauf von 60 Sekunden heruntergefahren.
Der Befehl "shutdown" ruft in Wirklichkeit das Programm "shutdown.exe" auf, welches sich im Verzeichnis system32 befindet.
Um den PC nun aus einem selber geschriebenen Programm aufzurufen, starten wir shutdown.exe mit den richtigen Parametern.
Zum Starten eines externen Programms dient die Funktion System.Diagnostics.Process.Start().
Im Programm geben wir jetzt beispielsweise
System.Diagnostics.Process.Start(System.Environment.SystemDirectory + "\\shutdown.exe", "-s -t 60");

ein.
Wird dieser Code ausgeführt, erscheint eine Meldung, dass das System nach Ablauf von 60 Sekunden heruntergefahren wird.
So einfach ist die Sache!
Abschließend noch einige mögliche Parameter für die "shutdown.exe":
  • -l: Abmelden (für log out)
  • -s: Herunterfahren (für shutdown)
  • -r: Neustart (für restart)
  • -a: Herunterfahren abbrechen (für abort)
  • -t XX: Zeitlimit (für time)
  • -c: Gibt einen Kommentar beim Herunterfahren aus (für comment)
  • -f: Erzwingt das Herunterfahren (auch wenn Programme geschlossen werden müssen) (für force)

Kommentare:

  1. sehr nützlich, danke :)

    AntwortenLöschen
  2. Voll gut erklärt...
    Das war die erste vernünftige Erklärung die ich gefunden hab...
    Sonst kommen da immer nur Foren wo keiner ne Ahnung hat ;)
    Danke

    AntwortenLöschen
  3. Ich habe jedoch ein Problem. Wenn ich "\\shutdown.exe", "-s -t 60" tippe, dann werden die Argumente (also -s -t 60) nicht benutzt. Ich sehe in der CMD einfach nur die Hilfe zu shutdown.exe.

    AntwortenLöschen
    Antworten
    1. Hallo, das sollte nicht vorkommen und kommt aber z.B. dann vor, wenn du einen Tippfehler hast und er den Befehl nicht kennt (shudown statt shutdown z.B.). Hast du meinen Code von oben mal 1:1 kopiert? Bei mir funktioniert's ...

      Löschen
  4. Dieser Kommentar wurde vom Autor entfernt.

    AntwortenLöschen
  5. Dieser Kommentar wurde vom Autor entfernt.

    AntwortenLöschen
  6. Viel einfacher geht es noch wenn man die windows.h inkludiert! dasnn kann man einfach zb den Befehl: system("shutdown -s -t 60"); geben.

    AntwortenLöschen
    Antworten
    1. Es geht hier um C# und nicht um C++.

      Löschen