Как восстановить сеанс удаленного рабочего стола на локальной консоли?

15

После завершения подключения к удаленному рабочему столу я хотел бы иметь возможность восстановить удаленный рабочий стол на локальной консоли, чтобы пользователю не приходилось повторно вводить пароль и снова входить в систему.

Как я могу создать ярлык на рабочем столе для этого?

glenviewjeff
источник

Ответы:

15
  1. Создайте ярлык на рабочем столе, щелкнув правой кнопкой мыши на рабочем столе и выбрав новый, затем выберите ярлык.
  2. В текстовое поле введите:

    %windir%\System32\tscon.exe 0 /dest:console (См. ниже)

  3. Щелкните правой кнопкой мыши по вновь созданному ярлыку, выберите Свойства.
  4. Перейдите на вкладку быстрого доступа и нажмите кнопку «Дополнительно».
  5. Установите флажок «Запуск от имени администратора» и нажмите «ОК».

Если это не работает, попробуйте изменить число ноль ( tscon.exe 0 /dest...) в шаге 2 на номер один, а если это не работает, продолжайте увеличивать его до тех пор, пока не будет выпущен удаленный рабочий стол.

Альтернативно, откройте оболочку с меню Пуск, запустите cmd. Введите qwinsta Enterи найдите идентификатор сеанса, который находится в активном состоянии (у него будет >символ в начале имени сеанса). Это число, которое нужно использовать на шаге 2.

Если вы хотите восстановить рабочий стол консоли, просто дважды щелкните по ярлыку и разрешите доступ администратора.

glenviewjeff
источник
очень хорошо сделано :)
JD
так как мы столкнулись с этим из-за этой проблемы : имейте в виду, что при использовании обходного пути с tscon сеанс остается открытым без блокировки! это означает, что любой, кто имеет подключение к консоли (например, через консоль менеджера виртуальных машин или vsphere), может использовать открытый сеанс даже от другого пользователя без входа в систему. Поэтому в используемом сценарии также должен быть сеанс lcok
rominator007
8

Вот версия, которая избегает зависимости от инструментов GNU. Он использует findstr, который поставляется с 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
Ким
источник
7
Вот моя версия, оптимизированная до однострочного, чтобы быть удобной для ярлыков: %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), это выглядит примерно так .
Хелдер Магальес
Я должен был заставить этот ярлык запускаться от имени администратора, чтобы он работал. Щелкните правой кнопкой мыши> Свойства> Дополнительно
Джеймс Эш
2

Ответ glenviewjeff дал мне большую часть пути, но идентификатор сеанса не всегда 1. Если вы попытаетесь отключить сеанс прослушивания или консоли, как это, вы получите «Ошибка 7045» - запрошенный доступ к сеансу запрещен, или если Идентификатор сеанса не существует. Идентификатор сеанса не найден.

Я сделал небольшой командный файл, чтобы вытащить текущий сеанс. Поскольку я делал это в Windows XP, мне нужно было использовать qwinsta вместо запроса сеанса, чтобы выяснить текущий идентификатор. Этот пакетный файл использует утилиты командной строки Unix, я использую Gnu в Windows ( https://github.com/bmatzelle/gow/downloads ), чтобы получить к ним доступ. Он извлекает текущий сеанс путем поиска знака «>» и затем переназначает его обратно в сеанс консоли.

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

Мне это нужно было для машины, которая подключена к сканеру Fujitsu IX500, сканер сканирует, только если экран не отображается на экране выбора имени пользователя / входа в Windows, что вы получаете, когда вы выходите из системы или отключаетесь от сеанса в обычном режиме. Поскольку машина работает без экрана, я хочу иметь возможность подключиться через rdp, но если я это сделаю, я не смогу использовать кнопку аппаратного сканирования, пока не войду в систему вручную или не перезапущусь. Пакетный файл выше решает эту проблему.

Саймон Д
источник
0

Я не мог заставить команду командного файла Саймона Д работать. Вот что у меня работает на Windows 7 x64:

for /f %%i in ('qwinsta ^| grep "^>" ^| awk "{print $3}"') do tscon %%i /dest:console
dralthiace
источник