How to make a python script which can logoff, shutdown, and restart a computer?
First you have to:
import subprocess
To shutdown your Windows PC:
subprocess.call(["shutdown", "/s"])
To restart your windows PC
subprocess.call(["shutdown", "/r"])
To logout your Windows PC:
subprocess.call(["shutdown", "/l "])
To shutdown your Windows PC after 900s:
subprocess.call(["shutdown", "/s", "/t", "900"])
To abort shutting down because there is no good reason to shutdown your pc with a python script, you were just copy-pasting code from stackoverflow:
subprocess.call(["shutdown", "/a "])
I only tried these function calls in Python 3.5. First of all, I do not think this has changed since python 2.7, and second: it is 2016, so I guess you have made the switch already since asking this question.
To restart:
shutdown /r
To log off:
shutdown /l
The final code block (as requested):
Log off:
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"])
If you can't get shutdown
to work somehow, you can always just call the function it calls out of the USER library. You could do this via ctypes
or win32api
, but you can also just do this:
subprocess.call(['rundll32', 'user.exe,ExitWindowsExec')
Or you could call the higher-level shell function that the start menu uses:
subprocess.call(['rundll32', 'shell32.dll,SHExitWindowsEx 2')
(See MSDN documentation on these functions.)
I think this is probably the worst way to do it. If you want to run a command, run shutdown
; if you want to use the API, use win32api
. But if you've got a bizarrely screwed-up system where shutdown /r
just doesn't work, it's an option.