Выход из Windows с использованием Python

Какую функцию Python я должен использовать, чтобы выйти из системы текущего пользователя. Я нашел пример, который блокирует мой компьютер, как комбинация Win+L

ctypes.windll.user32.LockWorkStation ()

но мне нужна похожая функция, которая выйдет из системы.

3 ответа

Это должно привести к тому, что текущий пользователь выйдет из системы:

ctypes.windll.user32.ExitWindowsEx(0, 1)

Ctypes должен быть в состоянии преобразовать эти параметры в беззнаковые целые без проблем. Если он выдает ошибку о типах аргументов, попробуйте обернуть 0 и 1 следующим образом: ctypes.c_ulong(0)

Документально здесь: ExitWindowsEx

Примечание: если вы практикуете выход из системы активных пользователей, не запрашивая их в диалоговом окне (даже если у него 60 секунд или таймер), они, скорее всего, будут очень недовольны.

Пытаться os.system("shutdown -l"),

shutdown -l команда оболочки Windows для выхода из системы

Вы можете сделать это, но только в качестве службы, которая работает как пользователь SYSTEM. Если вы попытаетесь выйти из системы под именем пользователя, с которым вы работаете, ваш скрипт прекратит работу (независимо от того, как вы выполняете это действие, текущая задача будет прервана после завершения работы пользовательской среды).

Однако, если вы напишите свою резервную копию, чтобы функционировать как служба, вы можете использовать win32api (через pywin32) для завершения всех пользовательских сессий (это не так уж и приятно, но давайте предположим, что это нормально для ваших пользователей), а затем сделать резервную копию. Существует проблема, которая возникнет, если пользователь снова войдет в систему - вам придется перехватывать событие входа пользователя в систему, но в остальном это относительно безболезненно.

Другие вопросы по тегам