Answers:
在文本字段中输入:
%windir%\System32\tscon.exe 0 /dest:console
(见下文)
如果这不起作用,请尝试将tscon.exe 0 /dest...
步骤2中的数字零()更改为数字1,如果不起作用,请不断增加它,直到释放远程桌面为止。
或者,使用“开始”菜单打开外壳,然后运行cmd
。键入qwinsta
Enter,然后查找处于活动状态的会话的ID(>
会话名称开头将带有一个字符)。这是您在步骤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
%windir%\system32\cmd.exe /c "for /F "tokens=1 delims=^> " %i in ('""%windir%\system32\qwinsta.exe" | "%windir%\system32\find.exe" /I "^>rdp-tcp#""') do "%windir%\system32\tscon.exe" %i /dest:console"
它>
以其他for
解析技巧代替了环境变量替换,并添加了cmd
用于快捷方式的选项。当与适当的图标结合使用时(我使用的注销图标Shell32.dll
),它类似于此。
glenviewjeff的答案帮助我解决了大部分问题,但会话ID并不总是1。如果您尝试以这种方式断开侦听或控制台会话的连接,则会收到“错误7045”-请求的会话访问被拒绝,或者会话ID不存在,找不到会话ID错误。
我制作了一个小的批处理文件以退出当前会话。当我在Windows XP上执行此操作时,我需要qwinsta而不是查询会话来确定当前ID。这个批处理文件使用unix命令行实用程序,我在Windows(https://github.com/bmatzelle/gow/downloads)上使用Gnu 来访问这些文件。它通过搜索“>”符号拉出当前会话,然后将其重新分配回控制台会话。
for /f %%i in ('qwinsta ^| grep "^>" ^| awk "{print $4}"') do set VAR=%%i
tscon %var% /dest:console
对于连接到Fujitsu IX500扫描仪的机器,我需要使用此扫描器,该扫描仪仅在Windows的用户名/登录选择屏幕上没有该屏幕时才扫描,这是您正常注销或断开会话时所得到的。由于机器在没有屏幕的情况下运行,因此我希望能够通过rdp连接,但是如果这样做,我将无法使用硬件扫描按钮,直到手动登录或重新启动。上面的批处理文件解决了此问题。