Lock windows workstation using Python
Asked Answered
O

3

19

Is there a way to lock the PC from a Python script on Windows?

I do not want to implement some kind of locking on my own - I'd like to use the same lock screen that's also used when the user presses WIN+L or locks the machine via the start menu.

Orthochromatic answered 22/12, 2013 at 19:55 Comment(0)
O
38

This can be done with the LockWorkStation() function from user32.dll:

This function has the same result as pressing Ctrl+Alt+Del and clicking Lock Workstation.

In Python it can be called using using the ctypes/windll FFI from the Python stdlib:

import ctypes
ctypes.windll.user32.LockWorkStation()
Orthochromatic answered 22/12, 2013 at 19:55 Comment(1)
@Mandelbrotter How is that comment supposed to be useful? I mentioned in my original question that WIN+L locks the desktop, and my question was obviously about doing it programmatically...Orthochromatic
M
1

A good solution that makes us avoid using Libraries/DLL files is to use the command prompet/ power shell. try running this command in your cmd rundll32.exe user32.dll, LockWorkStation....The PC is Locked!! so we can use subprocess to run this command like this:

    import subprocess
    cmd='rundll32.exe user32.dll, LockWorkStation'
    subprocess.call(cmd)
Marlie answered 2/10, 2019 at 11:32 Comment(3)
I think that's pretty messy. also, you shouldn't use shell=True here - there's absolutely no need for this here.Orthochromatic
I think calling rundll from code that is able to call dll functions directly is messy. Also, subprocess.call() should ideally be called with an array (command and args) instead of a string.Orthochromatic
i think you are right,but my code above works well with subprocessMarlie
B
-1

You can use the OS Library which is already in Python:

import os
os.system("rundll32.exe user32.dll, LockWorkStation")
Bioluminescence answered 18/2 at 21:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.