четверг, 26 мая 2016 г.

Удалённое управление сессией пользователя стандартными средствами Microsoft Windows (Remote Desktop Shadowing)

Начиная с Windows 8.1/2012 R2 была возвращена функция Remote Desktop Shadowing - теневой сеанс, который позволяет подключаться и управлять сессией пользователя на удалённом компьютере, в том числе незаметно. Установить подключение можно с помощью утилиты "mstsc" со следующими параметрами:

/shadow:ID – подключиться к терминальной сессии с указанным номером ID;
/v:servername – имя удалённого сервера, если не указывать, используется localhost;
/prompt – если не указать, используется текущий пользователь;
/control – возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя);
/noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии.

Чтобы определить нужный ID, воспользуйтесь следующим запросом:
query session /server:servername
Будет выведен список соответствия пользователей и их идентификаторов сеанса.

Кроме того необходимо выполнить следующие предварительные настройки:
1. Пользователь, который подключается с помощью теневого сеанса, должен быть администратором на удалённой машине.
2. Включите удалённый рабочий стол в "Свойства системы"->"Удалённый доступ".


3. Установите параметр реестра в одно из следующих возможных значений:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
«Shadow»=dword:0000000X

где X означает:
0 - удаленное управление не разрешено;
1 - полный контроль с разрешения клиента;
2 - полный контроль без разрешения клиента;
3 - наблюдение за сеансом с разрешения клиента;
4 - наблюдение за сеансом без разрешения клиента.

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

Аналогичные настройки можно сделать и с помощью локальной групповой политики: "Конфигурация компьютера-Административные шаблоны-Компоненты Windows-Службы удалённых рабочих столов-Узел сеансов удалённых рабочих столов-Подключения-Устанавливает правила удалённого управления для пользовательских служб удалённых рабочих столов".

Некоторые заготовки командных файлов, приведённые ниже, позволят с удобством пользоваться теневыми сеансами в корпоративной среде:

1. Данный скрипт запрашивает название удалённого компьютера, затем имя пользователя, к сеансу которого мы будем подключаться:

@echo off
set /P rcomp="Input name or IP of remote pc: "
set /P ruser="Input name of remote user: "
for /f "tokens=3 delims= " %%G in ('query session %ruser% /server:%rcomp%') do set rid=%%G
start mstsc /shadow:%rid% /v:%rcomp% /control

2. Скрипт аналогичен первому, только вместо запроса сеанса подключение производится к консольной сессии:

@echo off
set /P rcomp="Input name or IP of remote pc: "
for /f "tokens=3 delims= " %%G in ('query session console /server:%rcomp%') do set rid=%%G
start mstsc /shadow:%rid% /v:%rcomp% /control

3. В этом варианте пользователю будет показан список всех сеансов на удалённом компьютере и предложено выбрать к какому нужно подключиться:

@echo off
set /P rcomp="Input name or IP of remote pc: "
query session /server:%rcomp%
set /P rid="Choose ID of remote user: "
start mstsc /shadow:%rid% /v:%rcomp% /control

4. Данный алгоритм несколько сложнее предыдущих: он через WMI определяет версию ОС на удалённом компьютере, и в зависимости от этого, запускает теневое подключение или удалённый помощник. Кроме того, скрипт делает правку в реестре, чтобы выполнить подключение к пользователю незаметно:

@echo off
set /P rcomp="Input name or IP of remote pc: "
for /f "tokens=1 delims=." %%V in ('wmic /node:'%rcomp%' os get version') do (
if '%%V'=='5' set rver=5
if '%%V'=='6' set rver=6
if '%%V'=='10' set rver=10
)
for /f "tokens=3 delims= " %%G in ('query session console /server:%rcomp%') do set rid=%%G
if '%rver%'=='10' (
reg add "\\%rcomp%\HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow /t REG_DWORD /d 2 /f
start mstsc /shadow:%rid% /v:%rcomp% /control /noConsentPrompt
timeout 5 > NUL
reg delete "\\%rcomp%\HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow /f
) else (
start msra /offerRA %rcomp%
)

1 комментарий:

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

    ОтветитьУдалить