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?

glenviewjeff
fonte

Respostas:

15
  1. Crie um atalho na área de trabalho clicando com o botão direito na área de trabalho e selecionando novo e, em seguida, selecione o atalho.
  2. No campo de texto, digite:

    %windir%\System32\tscon.exe 0 /dest:console (Ver abaixo)

  3. Clique com o botão direito do mouse no atalho recém-criado, clique em Propriedades.
  4. Clique na guia atalho e clique no botão Avançado.
  5. 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 qwinsta Entere 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.

glenviewjeff
fonte
muito welll feito :)
JD
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
Kim
fonte
7
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.

Simon D
fonte
0

Não consegui que o comando de arquivo em lotes de Simon D funcionasse. Isto é o que funcionou para mim no Windows 7 x64:

for /f %%i in ('qwinsta ^| grep "^>" ^| awk "{print $3}"') do tscon %%i /dest:console
dralthiace
fonte