0

不确定这是否更适合 SO 或服务器故障。

在单元测试期间遇到了似乎是 Windows 10 上“快速用户切换”的限制。有以下两行批处理文件。

C:\Windows\System32\timeout.exe 30
C:\Windows\System32\shutdown.exe /L

打开 CMD.exe 并运行 bat 文件。“快速切换”(即登录)到另一个帐户。超时按计划完成,但注销语句无效...用户仍处于登录状态。返回时,您可以看到shutdown.exe 在屏幕上,但会话仍处于活动状态。

如果您运行脚本并保持登录帐户,则在 30 秒后,注销命令将按预期工作。

如果您调用屏幕保护程序而不是快速切换(即:锁定帐户),也会发现相同的限制。30 秒后,第一个命令完成,但会话仍处于活动状态。

我搜索了 MSDN 和 Google,但是关于快速用户切换和锁定功能以及它们如何限制用户在切换或锁定时可以执行的操作的文档很少。

4

1 回答 1

0

您绝对可以在会话被锁定时结束它,但您不能使用正在使用的普通ExitWindowsAPI 调用来完成它shutdown.exe。请参阅MSDN 中的注释

EWX_LOGOFF
关闭在调用 ExitWindowsEx 函数的进程的登录会话中运行的所有进程。然后它将用户注销。

此标志只能由在交互式用户登录会话中运行的进程使用。

对于仅使用批处理文件的解决方案,logoff相关的终端服务器工具允许您结束锁定的会话。在 Windows 10 1903 上测试时使用 PowerShell 的示例:

sleep 30    
logoff ([System.Diagnostics.Process]::GetCurrentProcess().SessionId)

至于文档,Windows 的多会话支持在远程桌面服务中得到了最有力的记录。用于 RDS 的所有建议和 API 都适用于快速用户切换。请参阅关于远程桌面服务

于 2020-02-09T00:15:57.883 回答