¿Cómo puedo restaurar una sesión de escritorio remoto en la consola local?

15

Después de terminar con una conexión de escritorio remoto, me gustaría poder restaurar el escritorio remoto a la consola local para que el usuario no tenga que volver a ingresar la contraseña e iniciar sesión nuevamente.

¿Cómo puedo crear un acceso directo de escritorio para hacer esto?

glenviewjeff
fuente

Respuestas:

15
  1. Cree un acceso directo de escritorio haciendo clic derecho en el escritorio y seleccionando nuevo, luego seleccione acceso directo.
  2. En el campo de texto ingrese:

    %windir%\System32\tscon.exe 0 /dest:console (Vea abajo)

  3. Haga clic derecho en el acceso directo recién creado, haga clic en propiedades.
  4. Haga clic en la pestaña de acceso directo y haga clic en el botón Avanzado.
  5. Marque la casilla "Ejecutar como administrador" y haga clic en Aceptar.

Si esto no funciona, intente cambiar el número cero ( tscon.exe 0 /dest...) en el paso 2 al número uno, y si no funciona, siga incrementándolo hasta que se libere su escritorio remoto.

Alternativamente, abrir un shell con menú de Inicio, Ejecutar cmd. Escriba qwinsta Enter, y buscar el ID de la sesión que se encuentra en el estado activo (que tendrá un >carácter en el inicio de su nombre de la sesión). Ese es el número que debe usar en el paso 2.

Cuando desee restaurar el escritorio de la consola, simplemente haga doble clic en el acceso directo y permita el acceso del administrador.

glenviewjeff
fuente
muy bien hecho :)
JD
dado que nos topamos con eso debido a este problema : ¡tenga en cuenta que al usar la solución alternativa con tscon, la sesión permanece abierta sin bloqueo! eso significa que cualquiera que tenga una conexión a la consola (por ejemplo, a través de la consola del administrador de máquina virtual o vsphere) puede usar la sesión abierta incluso desde otro usuario sin iniciar sesión. Por lo tanto, en el script utilizado también debería haber una sesión lcok
rominator007
8

Aquí hay una versión que evita la dependencia de las herramientas de GNU. Utiliza FindStr, que se envía con 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
fuente
77
Aquí está mi versión de, optimizada para una línea para que sea fácil de usar: %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"reemplaza >el reemplazo de la variable de entorno con fortrucos de análisis adicionales , así como agrega cmdopciones (para el acceso directo). Cuando se combina con un ícono apropiado (utilicé el ícono para cerrar sesión Shell32.dll), se vuelve similar a esto .
Helder Magalhães
Tuve que ejecutar este acceso directo como administrador para que funcione. Haga clic derecho> Propiedades> Avanzado
James Esh
2

La respuesta de glenviewjeff me llevó a la mayor parte del camino, pero la identificación de la sesión no siempre es 1. Si intenta desconectar la sesión de escucha o de la consola de esta manera, obtendrá un "Error 7045": se ha denegado el acceso a la sesión solicitada, o si el la identificación de la sesión no existe un error de SessionID no encontrado.

Hice un pequeño archivo por lotes para sacar la sesión actual. Cuando hice esto en Windows XP, necesitaba qwinsta en lugar de consultar la sesión para averiguar la ID actual. Este archivo por lotes utiliza utilidades de línea de comandos de Unix, yo uso Gnu en Windows ( https://github.com/bmatzelle/gow/downloads ) para tener acceso a estos. Extrae la sesión actual buscando un signo ">" y luego lo reasigna a la sesión de la consola.

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

Necesitaba esto para una máquina que está conectada a un escáner Fujitsu IX500, el escáner solo escanea si la pantalla no está en la pantalla de selección de nombre de usuario / inicio de sesión en Windows, que es lo que obtiene cuando cierra la sesión o desconecta una sesión normalmente. Como la máquina funciona sin una pantalla, quiero poder conectarme a través de rdp, pero si lo hiciera, no podría usar el botón de escaneo de hardware hasta que inicie sesión manualmente o reinicie. El archivo por lotes anterior resuelve este problema.

Simon D
fuente
0

No pude hacer funcionar el comando de archivo por lotes de Simon D. Esto es lo que funcionó para mí en Windows 7 x64:

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