完成远程桌面连接后,我希望能够将远程桌面恢复到本地控制台,以便用户不必重新输入密码并重新登录。
我如何创建桌面快捷方式来执行此操作?
答案1
- 通过右键单击桌面并选择新建来创建桌面快捷方式,然后选择快捷方式。
在文本字段中输入:
%windir%\System32\tscon.exe 0 /dest:console
(见下文)- 右键单击新创建的快捷方式,单击属性。
- 单击快捷方式选项卡,然后单击高级按钮。
- 选中“以管理员身份运行”框并单击确定。
如果这不起作用,请尝试将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:当您需要断开与服务器的连接时,双击此文件。
此脚本的好处:
- 设置非常简单。
- 不需要自己弄清楚会话 ID。
- 不需要输入密码。
- 将错误记录到
.log
文件中。