使用 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 脚本(作为服务安装)在注销后仍然存在?