使用 Python 注销 Windows

Posted

技术标签:

【中文标题】使用 Python 注销 Windows【英文标题】:Windows logoff using Python 【发布时间】:2012-02-06 19:25:57 【问题描述】:

我应该使用哪个 Python 函数来注销当前用户。 我找到了一个锁定我的电脑的例子,比如 Win+L 组合

ctypes.windll.user32.LockWorkStation ()

但我需要一个类似的功能,它会注销。

【问题讨论】:

你到底希望用这个做什么?脚本在运行过程中注销用户可能有什么真正的、非恶意的原因?如果你想注销,按Windows-L有什么难的?这不像启动脚本更容易...... 我要进行备份,但在此之前,所有用户都必须注销 让用户自己做不是更好吗? 【参考方案1】:

试试os.system("shutdown -l")

shutdown -l是用于注销的windows shell命令

【讨论】:

不管怎样,os.system 早已失宠in deference of a more reasonable subprocess command。【参考方案2】:

这应该会导致当前用户退出:

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

Ctypes 应该能够毫无问题地将这些参数转换为无符号整数。如果它抛出有关参数类型的错误,请尝试像这样包装 0 和 1:ctypes.c_ulong(0)

在此处记录:ExitWindowsEx

旁注:如果您习惯于在不使用对话框提示的情况下退出活跃用户(即使它有 60 秒或计时器),他们可能会非常不高兴。

【讨论】:

【参考方案3】:

您可以这样做,但只能作为以 SYSTEM 用户身份运行的服务。如果您尝试注销您正在运行的用户,您将终止您的脚本(无论您以何种方式完成此操作,当前任务都将在用户环境终止时终止)。

但是,如果您将备份编写为服务,则可以使用 win32api(通过 pywin32)终止所有用户会话(这不是很好,但假设您的用户可以)和然后做备份。如果用户重新登录,就会出现问题 - 您必须捕获用户登录事件 - 但否则这相对没有痛苦。

【讨论】:

以上是关于使用 Python 注销 Windows的主要内容,如果未能解决你的问题,请参考以下文章

python 脚本模拟登录后注销操作,使用登录时的cookies,注销时仍提示未登录

使用python在blender中注销并删除插件不会从菜单中删除该项目

如何从一个简单的网络应用程序中注销。在 CherryPy,Python

如何使 Python 脚本(作为服务安装)在注销后仍然存在?

带有 KeycloakOpenID 的 python-keycloak 包:注销不起作用

python Django简单注销和重定向。