Como posso restaurar uma sessão da área de trabalho remota no console local?
15
Depois de concluir a conexão da área de trabalho remota, gostaria de poder restaurar a área de trabalho remota no console local para que o usuário não precise redigitar a senha e fazer login novamente.
Como posso criar um atalho na área de trabalho para fazer isso?
Clique com o botão direito do mouse no atalho recém-criado, clique em Propriedades.
Clique na guia atalho e clique no botão Avançado.
Marque a caixa "Executar como administrador" e clique em OK.
Se isso não funcionar, tente alterar o número zero ( tscon.exe 0 /dest...) na etapa 2 para o número um e, se não funcionar, continue incrementando-o até que a área de trabalho remota seja liberada.
Como alternativa, abra um shell com o menu Iniciar, Executar cmd,. Digite qwinstaEntere procure o ID da sessão que está no estado ativo (ele terá um >caractere no início do nome da sessão). Esse é o número que você precisa usar na etapa 2.
Quando você quiser restaurar a área de trabalho do console, clique duas vezes no atalho e permita o acesso do administrador.
desde que nos deparamos com isso por causa deste problema : tenha em mente que, ao usar a solução alternativa com o tscon, a sessão fica aberta sem bloqueio! isso significa que qualquer pessoa que tenha uma conexão com o console (por exemplo, através do console do gerenciador de máquinas virtuais ou vsphere) pode usar a sessão aberta mesmo de outro usuário sem fazer login. Portanto, no script usado, também deve haver uma sessão lcok
rominator007
8
Aqui está uma versão que evita a dependência das ferramentas GNU. Ele usa o findstr, fornecido com o Windows.
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
Aqui está minha versão, otimizada para uma linha para facilitar o uso de atalhos: %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"substitui >a substituição de variáveis de ambiente por fortruques adicionais de análise, além de adicionar cmdopções (para o atalho). Quando combinado com um ícone adequado (usei o ícone de logoff Shell32.dll), ele fica semelhante a este .
Helder Magalhães
Eu tive que fazer esse atalho ser executado como administrador para que ele funcionasse. Botão direito do mouse> Propriedades> Avançado
James Esh
2
A resposta de glenviewjeff me levou quase todo o caminho até lá, mas o ID da sessão nem sempre é 1. Se você tentar desconectar a sessão de escuta ou console como esta, receberá um "Erro 7045" - o acesso à sessão solicitado será negado ou se o o id da sessão não existe um erro SessionID não encontrado.
Criei um pequeno arquivo em lotes para retirar a sessão atual. Ao fazer isso no Windows XP, eu precisava qwinsta, em vez de consultar a sessão para descobrir o ID atual. Este arquivo em lote usa utilitários de linha de comando unix, eu uso o Gnu no Windows ( https://github.com/bmatzelle/gow/downloads ) para ter acesso a eles. Ele puxa a sessão atual procurando um sinal ">" e o atribui novamente à sessão do console.
for /f %%i in ('qwinsta ^| grep "^>" ^| awk "{print $4}"') do set VAR=%%i
tscon %var% /dest:console
Eu precisava disso para uma máquina conectada a um scanner Fujitsu IX500, o scanner só digitaliza se a tela não estiver na tela de seleção de nome de usuário / conexão no Windows, que é o que você obtém ao fazer logoff ou desconectar uma sessão normalmente. Como a máquina funciona sem uma tela, desejo poder conectar-me via rdp, mas, se fizesse isso, não poderia usar o botão de verificação de hardware até fazer login manualmente ou reiniciar. O arquivo em lotes acima resolve esse problema.
Aqui está uma versão que evita a dependência das ferramentas GNU. Ele usa o findstr, fornecido com o Windows.
fonte
%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"
substitui>
a substituição de variáveis de ambiente porfor
truques adicionais de análise, além de adicionarcmd
opções (para o atalho). Quando combinado com um ícone adequado (usei o ícone de logoffShell32.dll
), ele fica semelhante a este .A resposta de glenviewjeff me levou quase todo o caminho até lá, mas o ID da sessão nem sempre é 1. Se você tentar desconectar a sessão de escuta ou console como esta, receberá um "Erro 7045" - o acesso à sessão solicitado será negado ou se o o id da sessão não existe um erro SessionID não encontrado.
Criei um pequeno arquivo em lotes para retirar a sessão atual. Ao fazer isso no Windows XP, eu precisava qwinsta, em vez de consultar a sessão para descobrir o ID atual. Este arquivo em lote usa utilitários de linha de comando unix, eu uso o Gnu no Windows ( https://github.com/bmatzelle/gow/downloads ) para ter acesso a eles. Ele puxa a sessão atual procurando um sinal ">" e o atribui novamente à sessão do console.
Eu precisava disso para uma máquina conectada a um scanner Fujitsu IX500, o scanner só digitaliza se a tela não estiver na tela de seleção de nome de usuário / conexão no Windows, que é o que você obtém ao fazer logoff ou desconectar uma sessão normalmente. Como a máquina funciona sem uma tela, desejo poder conectar-me via rdp, mas, se fizesse isso, não poderia usar o botão de verificação de hardware até fazer login manualmente ou reiniciar. O arquivo em lotes acima resolve esse problema.
fonte
Não consegui que o comando de arquivo em lotes de Simon D funcionasse. Isto é o que funcionou para mim no Windows 7 x64:
fonte