Як я можу відновити сеанс віддаленого робочого столу на локальній консолі?


15

Після того, як я закінчую з'єднання з віддаленим робочим столом, я хотів би мати можливість відновити віддалений робочий стіл на локальній консолі, щоб користувачеві не довелося вводити пароль і знову входити в систему.

Як я можу створити ярлик на робочому столі для цього?

Відповіді:


15
  1. Створіть ярлик робочого столу, клацнувши правою кнопкою миші на робочому столі та вибравши новий, потім виберіть ярлик.
  2. У текстове поле введіть:

    %windir%\System32\tscon.exe 0 /dest:console (Дивіться нижче)

  3. Клацніть правою кнопкою миші новостворений ярлик, виберіть властивості.
  4. Перейдіть на вкладку швидкого доступу та натисніть кнопку Додатково.
  5. Поставте прапорець "Запустити як адміністратор" і натисніть кнопку ОК.

Якщо це не працює, спробуйте змінити число нуль ( tscon.exe 0 /dest...) на кроці 2 на номер одне, а якщо воно не працює, продовжуйте збільшувати його, поки не вийде ваш віддалений робочий стіл.

З іншого боку , відкрити оболонку з меню Пуск, Виконати cmd. Введіть qwinsta Enterі знайдіть ідентифікатор сеансу, який знаходиться в активному стані (він буде мати >символ на початку своєї назви сесії). Це число, яке потрібно використовувати на кроці 2.

Коли ви хочете відновити робочий стіл консолі, просто двічі клацніть ярлик і дозвольте адміністратору отримати доступ.


дуже добре зроблено :)
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), він стає подібним до цього .
Helder Magalhães

Мені довелося змусити цей ярлик запустити як адміністратор, щоб він працював. Клацніть правою кнопкою миші> Властивості> Додатково
Джеймс Еш

2

Відповідь glenviewjeff отримала мене більшу частину шляху, але ідентифікатор сеансу не завжди 1. Якщо ви спробуєте відключити сеанс прослуховування чи консолі, як це, ви отримаєте "Помилка 7045" - запитуваному доступу до сеансу заборонено, або якщо ідентифікатор сесії не існує помилки SessionID не знайдено.

Я зробив невеликий пакетний файл, щоб витягнути поточний сеанс. Коли я робив це в 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.