如何将远程桌面会话恢复到本地控制台?

如何将远程桌面会话恢复到本地控制台?

完成远程桌面连接后,我希望能够将远程桌面恢复到本地控制台,以便用户不必重新输入密码并重新登录。

我如何创建桌面快捷方式来执行此操作?

答案1

  1. 通过右键单击桌面并选择新建来创建桌面快捷方式,然后选择快捷方式。
  2. 在文本字段中输入:

    %windir%\System32\tscon.exe 0 /dest:console(见下文)

  3. 右键单击新创建的快捷方式,单击属性。
  4. 单击快捷方式选项卡,然后单击高级按钮。
  5. 选中“以管理员身份运行”框并单击确定。

如果这不起作用,请尝试将tscon.exe 0 /dest...步骤 2 中的数字零()更改为数字一,如果不起作用,请继续增加它,直到您的远程桌面被释放。

或者,打开带有开始菜单的 shell,然后运行cmd。输入qwinsta Enter,然后查找处于活动状态的会话的 ID(>其会话名称开头有一个字符)。这就是您需要在步骤 2 中使用的数字。

当您想要恢复控制台桌面时,只需双击快捷方式并允许管理员访问。

答案2

这是一个避免依赖 GNU 工具的版本。它使用 Windows 附带的 findstr。

for /f %%i in ('qwinsta ^| findstr /C:">rdp-tcp#"') do set RDP_SESSION=%%i
:: Strip the >
set RDP_SESSION=%RDP_SESSION:>=%
tscon %RDP_SESSION% /dest:console

答案3

glenviewjeff 的回答帮助我解决了大部分问题,但是会话 ID 并不总是 1。如果您尝试像这样断开监听或控制台会话,您将收到“错误 7045” - 请求的会话访问被拒绝,或者如果会话 ID 不存在,则会收到未找到 SessionID 的错误。

我制作了一个小批处理文件来提取当前会话。由于我在 Windows XP 上执行此操作,因此我需要使用 qwinsta 而不是查询会话来找出当前 ID。此批处理文件使用 unix 命令行实用程序,我在 Windows 上使用 Gnu(https://github.com/bmatzelle/gow/downloads) 才能访问这些内容。它通过搜索“>”符号来提取当前会话,然后将其重新分配回控制台会话。

for /f %%i in ('qwinsta ^| grep "^>" ^| awk "{print $4}"') do set VAR=%%i
tscon %var% /dest:console

我需要一台连接到富士通 IX500 扫描仪的机器,扫描仪仅在屏幕不在 Windows 中的用户名/登录选择屏幕上时才会扫描,而当您正常注销或断开会话时,就会出现这种情况。由于机器运行时没有屏幕,我希望能够通过 rdp 连接,但如果我这样做,我将无法使用硬件扫描按钮,直到我手动登录或重新启动。上面的批处理文件解决了这个问题。

答案4

步骤1: 将此脚本复制到文本文件中,例如:rdp-disconnect.cmd

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$sessionid=((quser $env:USERNAME | select -Skip 1) -split '\s+')[2]; tscon $sessionid /dest:console" 2> rdp-disconnect-errors.log

第2步: 创建此文件的快捷方式,例如:rdp-disconnect.lnk

步骤3: 设置此快捷方式以管理员身份运行。

-> 右键单击​​快捷方式链接 -> 属性 -> 高级 -> 以管理员身份运行 -> 确定

步骤4:当您需要断开与服务器的连接时,双击此文件。

此脚本的好处:

  1. 设置非常简单。
  2. 不需要自己弄清楚会话 ID。
  3. 不需要输入密码。
  4. 将错误记录到.log文件中。

参考:https://stackoverflow.com/a/53507397/8644294

相关内容