2013-02-08 2 views
5

HintergrundWie erstellt man ein Python-Skript, das einen Computer abmelden, herunterfahren und neu starten kann?

Ich bin gerade dabei, mich Python des Unterrichtens, und ich dachte, dass es ein sehr cooles Projekt wäre eine Art „Kontrollzentrum“ zu haben, in dem ich könnte Herunterfahren, Neustart, und log weg von meinem Computer. Ich möchte auch das Subprozessmodul verwenden, da ich gehört habe, dass das Import-OS-Modul veraltet ist.

aktuellen Code

def shutdown(self): 
    import subprocess 
    subprocess.call(["shutdown", "-f", "-s", "-t", "60"]) 

Frage

Was ich wirklich fragen, ist es eine Möglichkeit (die Subprozess-Modul) zu Abmelde von und der Computer neu gestartet werden?

Tech Specs

Python 2.7.3

Windows 7, 32-Bit-

+0

-r vielleicht neu zu starten? –

+0

Danke für den Vorschlag, aber ich habe es versucht und das Problem ist - der Computer kann die Datei "Neustart" nicht finden, die Optionen (-f, -s, -t) sind in dieser Hinsicht nicht wirklich wichtig. – xxmbabanexx

+0

Ich denke, die Schalter sollten '/ f','/s' usw. – Blender

Antwort

6

neu zu starten:

shutdown /r 

abzumelden:

shutdown /l 

Der letzte Codeblock (wie gewünscht):

Abmelden:

def shutdown(self): 
    import subprocess 
    subprocess.call(["shutdown", "-f", "-s", "-t", "60"]) 

Restart:

def shutdown(self): 
    import subprocess 
    subprocess.call(["shutdown", "-f", "-r", "-t", "60"]) 
+2

Können Sie den letzten Codeblock hinzufügen? – GLHF

+0

Welcher letzte Codeblock? Ich verstehe nicht. –

+0

@ben_frankly der letzte Codeblock _in python_. – user1712447

2

Wenn Sie nicht shutdown irgendwie zu arbeiten, können Sie immer einfach anrufen die Funktion, die es aus der USER-Bibliothek aufruft. Sie könnte dies über ctypes oder win32api, aber Sie können auch dies nur tun:

subprocess.call(['rundll32', 'user.exe,ExitWindowsExec') 

Oder Sie könnten die übergeordnete Shell-Funktion aufrufen, die das Startmenü verwendet:

subprocess.call(['rundll32', 'shell32.dll,SHExitWindowsEx 2') 

(Siehe MSDN-Dokumentation zu diesen Funktionen.)

Ich denke, das ist wahrscheinlich der schlechteste Weg, es zu tun. Wenn Sie einen Befehl ausführen möchten, führen Sie shutdown; Wenn Sie die API verwenden möchten, verwenden Sie win32api. Aber wenn Sie ein bizarr vermasseltes System haben, wo shutdown /r einfach nicht funktioniert, ist es eine Option.

7

Zuerst müssen Sie:

import subprocess 

Zum Herunterfahren Ihres Windows-PC:

subprocess.call(["shutdown", "/s"]) 

Ihren Windows-PC neu zu starten

subprocess.call(["shutdown", "/r"]) 

Ihrem Windows-PC abzumelden:

subprocess.call(["shutdown", "/l "]) 

Zum Herunterfahren Ihres Windows-PC nach 900s:

subprocess.call(["shutdown", "/r", "/s", "900"]) 

herunter abzubrechen, weil es keinen guten Grund zum Herunterfahren ist Ihr PC mit einem Python-Skript, waren Sie gerade von Stackoverflow Copy- Einfügen von Code:

subprocess.call(["shutdown", "/a "]) 

Ich habe nur diese Funktionsaufrufe in Python 3.5 versucht. Vor allem glaube ich nicht, dass sich das seit Python 2.7 geändert hat, und zweitens: Es ist 2016, also denke ich, dass du schon seit der Frage diese Frage gestellt hast.