rustedowl (rustedowl) wrote,
rustedowl
rustedowl

Categories:

Remote Assistance - исследование и приготовление

Вообще, Remote Assistance несмотря на множество замечательных функций так и не стал популярен из-за дурацкой реализации его применения. Нужно либо пользоваться MSN, либо электронной почтой для того чтобы прислать тикет... а потом еще и ждать разрешения пользователя сначала на то чтобы подключиться, а потом еще и на то чтобы получить контроль. Крайне неудобно, как по мне - поэтому я им и не пользовался до недавнего времени. Только в заметках была цель - разобраться, как бы его запустить. Ну что ж... разобрался, более-менее.
В доменной среде все просто и понятно, создаете GPO с его настройками, создаете в домене спец.пользователя для этого дела, распространяете политику и пользуетесь. Все хорошо - за исключением подтверждения пользователя, но это легко решается (чуть ниже усё будет).

[Исследование и его результаты]

Я же решил сделать более-менее автоматизированную установку Remote Assistance на любую ОСь старше 7ки, независимо от ее редакции (т.е. без необходимости вызывать gpedit.msc).
Итак, технология включает в себя:
1. Создание пользователя. Тут все сравнительно просто:
[cmd-шник создания пользователя]
wmic group where sid="S-1-5-32-544" get name | findstr /V "Name" > admins_l10n.name
wmic group where sid="S-1-5-32-545" get name | findstr /V "Name" > users_l10n.name
SET /p ADMINS=< admins_l10n.name
SET /p USERS=< users_l10n.name
del admins_l10n.name
del users_l10n.name
net user ИМЯ_ПОЛЬЗОВАТЕЛЯ УЖАСНО_ДЛИННЫЙ_ПАРОЛЬ /add /Y
net localgroup "%ADMINS:~0,-2%" ИМЯ_ПОЛЬЗОВАТЕЛЯ /add
net localgroup "Группа удаленных помощников" ИМЯ_ПОЛЬЗОВАТЕЛЯ /add
net localgroup "%USERS:~0,-2%" ИМЯ_ПОЛЬЗОВАТЕЛЯ /delete
WMIC UserAccount WHERE Name="ИМЯ_ПОЛЬЗОВАТЕЛЯ" Set PasswordExpires=FALSE


Все замечательно отрабатывало, я расслабился и переустановил на виртуалке систему, запустил этот батник от админа... и подключиться не смог. Не добавляется пользователь в группу удаленных помощников, поскольку группы той не существует.
Тогда я начал копать. Группа появляется после применения групповых политик, значит - посмотрим, что при этом происходит. Посмотрел. Записал.
[REG-файл]
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"fAllowUnsolicited"=dword:00000001
"fAllowUnsolicitedFullControl"=dword:00000001
"UseBandwidthOptimization"=dword:00000001
"OptimizeBandwidth"=dword:00000000
"LoggingEnabled"=dword:00000000
"CreateEncryptedOnlyTickets"=dword:00000000
"fAllowToGetHelp"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\RAUnsolicit]
"ИМЯ_ПОЛЬЗОВАТЕЛЯ"="ИМЯ_ПОЛЬЗОВАТЕЛЯ"


Увы, группа при этом не создается, и пользователь в нее не добавляется. Ладно, посмотрим что там за группа... посмотрел:

[REG-файл для создания группы]
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Aliases\000003EA]
"C"=hex:ea,03,00,00,00,00,00,00,b0,00,00,00,02,00,01,00,b0,00,00,00,36,00,00,\
00,00,00,00,00,e8,00,00,00,aa,00,00,00,00,00,00,00,94,01,00,00,1c,00,00,00,\
01,00,00,00,01,00,14,80,90,00,00,00,a0,00,00,00,14,00,00,00,44,00,00,00,02,\
00,30,00,02,00,00,00,02,c0,14,00,13,00,05,01,01,01,00,00,00,00,00,01,00,00,\
00,00,02,c0,14,00,ff,ff,1f,00,01,01,00,00,00,00,00,05,07,00,00,00,02,00,4c,\
00,03,00,00,00,00,00,14,00,0c,00,02,00,01,01,00,00,00,00,00,01,00,00,00,00,\
00,00,18,00,1f,00,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,00,\
00,18,00,1f,00,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,24,02,00,00,01,02,\
00,00,00,00,00,05,20,00,00,00,20,02,00,00,01,02,00,00,00,00,00,05,20,00,00,\
00,20,02,00,00,13,04,40,04,43,04,3f,04,3f,04,30,04,20,00,43,04,34,04,30,04,\
3b,04,35,04,3d,04,3d,04,4b,04,45,04,20,00,3f,04,3e,04,3c,04,3e,04,49,04,3d,\
04,38,04,3a,04,3e,04,32,04,00,00,27,04,3b,04,35,04,3d,04,4b,04,20,00,4d,04,\
42,04,3e,04,39,04,20,00,33,04,40,04,43,04,3f,04,3f,04,4b,04,20,00,3c,04,3e,\
04,33,04,43,04,42,04,20,00,3f,04,40,04,35,04,34,04,3b,04,30,04,33,04,30,04,\
42,04,4c,04,20,00,43,04,34,04,30,04,3b,04,35,04,3d,04,3d,04,43,04,4e,04,20,\
00,3f,04,3e,04,3c,04,3e,04,49,04,4c,04,20,00,3f,04,3e,04,3b,04,4c,04,37,04,\
3e,04,32,04,30,04,42,04,35,04,3b,04,4f,04,3c,04,20,00,3d,04,30,04,20,00,4d,\
04,42,04,3e,04,3c,04,20,00,3a,04,3e,04,3c,04,3f,04,4c,04,4e,04,42,04,35,04,\
40,04,35,04,2e,00,00,00,01,05,00,00,00,00,00,05,15,00,00,00,09,b0,b9,7c,20,\
d3,a1,c6,3d,1f,1a,25,e9,03,00,00

[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Aliases\Names\Группа удаленных помощников]
@=hex(3ea):



Но и это ничего не дало. Группа есть, пользователь в нее добавляется, но подключиться не удается. После еще одной переустановки системы заметил, что последние 6 строчек меняются при каждом создании группы с помощью групповой политики. Путь оказался тупиковым.

Решил зайти с другого конца. Раз это групповая политика - то ею наверняка можно как-то управлять. После трех часов исследований я убедился в том, что есть только три пути:
1. gpedit.msc - и далее мышкой.
2. gpedit.msc и далее мышкой, а потом скопировать содержимое C:\Windows\System32\GroupPolicy себе куда-нибудь, затем на другой системе скопировать ее же обратно и сделать gpupdate /force. После этого группа как таковая не появляется, но cmd-шник отрабатывает и подключиться возможно. Однако этот метод оказался не переносим между Windows 7 и Windows 10, и, чуется мне, даже между разными версиями переносим не будет.
3. Домен и AD. Создаем GPO с административным шаблоном и наслаждаемся.

В общем, жопа. Настройка удаленного помощника всегда в первый раз будет ручной и через gpedit.msc
Для тех версий Windows где gpedit.msc отсутствует, добрые дяди с форумов Windows собрали установочник, который ее возвращает. Инструкция и ссылка - здесь.

Ну а теперь немножко мёда для доменного использования. Я уже упоминал в начале поста, что пользоваться Remote Assistance неудобно, поскольку надо ждать пока пользователь соизволит сначала разрешить удаленное управление, а потом еще и перехватить контроль. Один чувак написал простое решение этой незначительной проблемы. Это скрипт на языке AutoHotkey, его можно скомпилировать и распространить по компьютерам.

[Вариант, адаптированный мной под русскую версию Windows 7]
;
; AutoHotkey Version: 1.x
; Language: English
; Platform: Win 7 or higher
; Author: Cyborg
;
; Script Function:
; This script will automatically accept incoming Remote Assistance invitations.
;
; I HIGHLY RECOMMEND you do NOT run this script outside of a domain environment. Do not use this script on your home pc.
;

#Persistent ; Always runs
#NoTrayIcon ; No tray icon, find it in processes
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#SingleInstance ; Only 1 may run
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.

RemoteAsst:

SetTitleMatchMode, Fast ; Looks for the visible text in the title.
SetTitleMatchMode, 2 ; Looks for the exact title.

WinWait, Удаленный помощник Windows ; Looks for the first invitation to show screen.
WinActivate
Click 240, 162 ; Click Yes

SetTitleMatchMode, 1 ; Looks for the beginning of a title to match.

WinWait,Удаленный помощник Windows - вам помогает, ; Looks for the RA floating toolbar.
WinMinimize

SetTitleMatchMode, 3 ; Looks for the exact title.

WinWait, Удаленный помощник Windows, , 60 ; Looks for the second invitation to control the pc.
if ErrorLevel ; If no remote control taken within 60 seconds the session is terminated and script starts over.
{
SetTitleMatchMode, Slow
IfWinExist, Удаленный помощник Windows, Сеанс окончен
WinKill
GoSub, RemoteAsst
}
else ; If the Windows Remote Assistant window pops up it will click yes to initiate remote control.
{
WinActivate
Click 240, 180 ; Click Yes
}

SetTitleMatchMode, Slow ; Looks for hidden text in the title.

WinWait, Удаленный помощник Windows, Сеанс окончен ; Waits for the session to end then exits RA.
WinKill

GoSub, RemoteAsst ; Goes to the beginning to wait for another invitation.

Как видим, все очень просто: просто отслеживает окно и нажимает на кнопки. Загрузки процессора при этом я не наблюдал.
ВАЖНЫЙ МОМЕНТ: Обработка окон с кириллицей будет работать только если скрипт сохранен как UTF8-BOM.

Собственно, у меня всё.
Tags: IT-сфера, windows, Жизнь замечательных сов, Инструкции, Шаманство
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 11 comments