1

Тема: Автоматизация доступа к удаленному рабочему столу

Решил продолжить эту тему здесь, потому что:
- к теме про LAN Administrator, где и началось обсуждение, этот вопрос имеет весьма косвенное отношение;
- наговорили достаточно много интересного и полезного, но в том топике это вряд ли кем будет найдено;
- я, громче всех кричавший там "давайте завязывать" тоже хочу высказаться
- все варианты установки удаленного доступа могут и должны быть автоматизированы. Вот вопросы автоматизации этих подключений я и предлагаю рассмотреть в данной теме.

Для начала, я бы разбил обсуждение на 4 разные ветки:
1. Доступ к удаленному рабочему столу с помощью сторонних утилит (таких как RAdmin, VNC, TeamViewer и пр.)
2. Доступ с помощью Remote Desktop Connection (RDC) с созданием собственной сессии на удаленном ПК.
3. Доступ с помощью RDC с подключением к сессии работающего на удаленном ПК пользователя.
4. Доступ с помощью Remote Assistance (Удаленного помощника).

Итак, что лично я думаю по каждому из пунктов:
1. Пример автоматизации RAdmin вы можете глянуть в LAN Administrator:
Автоматическая установка и запуск сервера на удаленном ПК (тут).
Используется сервер версии 2.1, т.к. более поздние версии обросли разными ненужными и вредными порой вещами (например требованием обязательного ввода пароля) и сурьезно увеличились в размере.
А так на удаленный ПК кидается тройка файликов общим весом 350кБ и устанавливается соответствующий сервис. Все. Можно подключатся
С помощью консольки в 900кБ (понимающей командную строку) доступен и просмотр и управление и копирование файлов и терминальная сессия. Что же еще желать?

Что касается других средств удаленного доступа (как, например, VNC) то я не уверен что их удаленную установку и подключение можно так же автоматизировать (выдержав при этом минимальные размеры дистрибутива).
Я не прав? Может быть. Только пусть ваши доказательства содержат работающие примеры скриптов.

2. Как бы не был минимален объем дистрибутива внешней проги, как бы удобно не было с ней работать, имеющиеся в Винде средства всегда будут иметь свои плюсы, поскольку они - встроенные.
Обеспечить доступ к компу по RDC несложно - достаточно разрешить на нем подключения и добавить удаленного пользователя в группу "Пользователи удаленного рабочего стола".
Как это сделать удаленно? В домене - централизовано с помощью политик. А если комп - в рабочей группе или я не имею доступа к GPO (но являюсь локальным администратором) ? Вот тут очень пригодился бы reg-файлик или скрипт для включения данных опций.
С подключением - уже проще mstsc /v:<host.name> и - вперед! (это в LAN Administrator уже присутствует).

3. С удивлением узнал что такое - возможно. Буду пробовать!
Возможно и не стоило отделять этот способ подключения от предыдущего...

4. Гугл вам в помощь! Сразу найдете и как организовать подключение, и как подключиться не спрашивая разрешения у пользователя удаленного ПК, и как автоматизировать подключение.
Но все - опять руками - "зайдите туда, нажмите то...". В общем скрипт для включения всех этих фич с одной кнопки совсем бы не помешал.

Интересно было бы услышать отчеты о ваших испытаниях этих способов. Особенно когда используются машины с разными ОС. Если для сторонних утилит версия системы имеет мало значения, то для встроенных средств это зачастую - наиболее важное условие. Рассмотреть хотя бы самые популярные оси - 7-ку и ХР.

В общем, в идеальном варианте я бы хотел иметь для всех способов подключения по 2 скрипта:
1й - автоматически настраивающий машину на подключение данного типа (он может быть запущен с помощью pcexec на удаленном ПК).
2й - запускаемый на моем ПК для установки соединения с удаленной машиной (часто это просто командная строка с параметром).
В общем точно так же как это организовано в LAN Administrator для RAdmin-а.
Придумаю я - опубликую тут.
Придумаете вы - пожалуйста не стесняйтесь

2 (изменено: Rom5, 2011-11-27 02:12:46)

Re: Автоматизация доступа к удаленному рабочему столу

Еще использую и такой способ:
Для тех, у кого в организации используется SCCM от Майкрософт: установленные SCCM-ные клиенты на машинах принимают запросы на подключение от удаленных экспертов "своими" встроенными возможностями (инсталлируются с клиентом специальные драйвера), инициируется это подключение экспертами с SCCM-оснастки пунктом "Remote Tools" на интересуемой машине в коллекции/запросе.
А стартовать такое подключение, как оказалось, можно не только из оснастки, но и непосредственным вызовом SCCM-ного приложения коннекта к машине - RC.exe c параметрами: "1" и имя компьютера, т.е. я запускаю его из своей скриптовой проги управления машинами вызовом батника:


::: Start rc.exe - RemoteTools SCCM

start "" "c:\Program Files\Microsoft Configuration Manager Console\AdminUI\bin\i386\rc.exe" 1 %1

Из плюсов: т.к. почти на всех машинах домена стоят клиенты, то очень выручает, когда по каким-то причинам стандартный Offer Remote Assistance не может достучаться, а надо срочно подключиться,  и еще к слову - подключается намного быстрее Удален.помощника.
Из фич: на клиенте (предварительно зайдя на него RDC) можно отключить требования подтверждения подключения юзером (хотя "горячая" подмена файлов в случае с Assistance - более гибка).
Из минусов: конечно, кроме самого наличия SCCM-клиента на удаленной машине, еще в отличие от Удален.помощника передает также и изображение обоев Рабочего стола -а там бывает такое...

Для пунтка 4 (автоматизация старта Offer Remote Assistance) использую скрипт:

'**** run_RemAs.vbs *****************************
' Запуск "Offer Remote Assistance"
' Параметр - имя подключаемого компьютера
' (!) Имя окна с Ассистентом - для англоязычных Windows XP'
' Для Windows-7 - имя машины сразу же передается параметром
'************************************************

Option Explicit 

Dim giUnsolicited
' giUnsolicited = 0
giUnsolicited = 1 ' 1-режим подмены своего "UnSolicitedRCUI.htm" / 0 - обычный режим

Dim giDebug
giDebug    = 0 ' 1-вывод отладочных сообщений и т.п. / 0 - обычный режим
' --- чтение своей инишки ----------------------------
' INI читается в случае ее наличия, 
' используется для переопеределения режима отладки (ищется строка: debug=...)
Const sMyINI = "run_RemAs.ini"
Dim fso
Set fso=CreateObject("Scripting.FileSystemObject")
Dim CurDir
Dim yes_no, s, iPos
CurDir = fso.GetAbsolutePathName(".")
yes_no = fso.FileExists( CurDir & "\" & sMyINI)
If yes_no Then
	Dim fspi
	Set fspi=fso.OpenTextFile(sMyINI, 1)
	Do While not fspi.AtEndOfStream
		s = fspi.ReadLine
		iPos = InStr(1, s, "=")
		If iPos>0 Then
			If LCase(Trim(Left(s, iPos-1)))="debug" Then
				giDebug = CInt( Trim( Right(s, Len(s)-iPos) ) ) ' правая от "=" часть преобразовывается в целое число
			End IF
		End IF
	Loop
	fspi.Close
	Set fspi = Nothing
End IF '(yes_no)
' -----

Dim A
Set A=Wscript.Arguments

Dim sComp
sComp = ""
If A.Count>=1 Then  ' имеется переданный параметр
	sComp = A(0)
else
	sComp = InputBox("Введите имя подключаемого компьютера", "Настройка запуска ""Offer Remote Assistance""")
End IF

Dim oShell
Set oShell = WScript.CreateObject("WScript.Shell") 

If sComp<>"" Then  ' имеется непустое имя компа
	If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "---- Start: " & Now()

	Dim objScriptExec, strResults
	Set objScriptExec = oShell.Exec("%comspec% /c ver") 
	strResults = objScriptExec.StdOut.ReadAll
	iPos = InStr(strResults, "Version 6.")
	If iPos>0 Then ' Windows 7 !!!!'
		If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "Win: Version 6."
		oShell.Run "%SystemRoot%\system32\msra /offerRA " & sComp
	else
	
		'Windows XP '
		' If MsgBox("<OK> -- вызов Ассистента с занесением имени хоста в свой UnSolicitedRCUI.htm" &vbCr&vbCr&_
			' "<Cancel> - вызов Ассистента с клавишным набором хоста"&vbCr&vbCr, _
			' vbOKCancel+vbQuestion, "Варианты старта RemAs")=vbOK Then giUnsolicited = 1
		
		Dim gs_OriginalFiles, gs_CustomFiles, gs_LocalWindir, gs_RemoteWindir
		gs_OriginalFiles = "Unsolicited_Remote_Assistance_1\Data\Original"
		gs_CustomFiles = "Unsolicited_Remote_Assistance_1\Data\Custom"
		'--- определение системных каталогов своей и удаленной Windows'
		GetDrive "."
		
		'--- копируем в свою системн.директорию с заменой содержимого (прописывается имя удален.машины) файл Data\Custom\UnSolicitedRCUI.htm'
		If giUnsolicited Then
			'Opening custom UnSolicitedRCUI.htm and reading the file into a variable so we can customize the file.
			Dim objFile, strText, strNewText
			Set objFile = fso.OpenTextFile(CurDir & "\" & gs_CustomFiles & "\UnSolicitedRCUI.htm", 1)
			strText = objFile.ReadAll
			objFile.Close
			'Modifying the contents of the file so that it includes the desired host name.
			strNewText = Replace(strText, "idComputerName.value = ""CHANGEME"";", "idComputerName.value =""" & sComp & """;")
			'Writing the modified, custom UnSolicitedRCUI.htm to the local machine.
			Set objFile = fso.OpenTextFile(gs_LocalWindir & "\PCHealth\HelpCtr\Vendors\CN=Microsoft Corporation,L=Redmond,S=Washington,C=US\Remote Assistance\Escalation\Unsolicited\UnSolicitedRCUI.htm", 2, True)
			objFile.Write strNewText
			objFile.Close
			Set objFile = Nothing
			If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "Write local file UnSolicitedRCUI.htm"
		End IF

		oShell.Run _
			"iexplore.exe hcp://CN=Microsoft Corporation,L=Redmond,S=Washington,C=US/Remote Assistance/Escalation/Unsolicited/Unsolicitedrcui.htm", 1

		Dim sAppTitle
		sAppTitle = "Help and Support Center"

		Dim ret
		'Если процесс имеет видимое окно - то Ret после вызова нижележащей строки 
		'получит значение больше нуля. Если меньше нуля - значит процесс или не имеет окон 
		'или все окна у него невидимы 

		If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "PC: " & sComp

		ret = 0
		ret = oShell.AppActivate (sAppTitle)

		'-- делаем еще несколько полусекундных пауз, чтобы приложение таки успело запуститься
		Dim iSecAll, iSecWait, i, lTmp
		iSecAll = 20000 'всего отводим на попытку активации окна - 20сек
		iSecWait = 500  'время простоя
		i = 0 ' признак необходимости продолжения попыток переключения в окно
		While i=0
			WScript.Sleep iSecWait
			iSecAll = iSecAll - iSecWait
			ret = oShell.AppActivate (sAppTitle)
			If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "Sleep: " & iSecWait & ", iSecAll: " & iSecAll & ",  ret: " & ret
			' выход из цикла - либо в окно переключились, либо время закончилось
			If ret Then 
				i=1 
			End IF
			If iSecAll<=0 Then 
				i=1 
			End IF
		WEnd 

		Set oShell=Nothing 

		If ret Then 'при наличии успешного переключения - "набираем" имя компа
			WScript.Sleep 3000 ' 3 сек. дополнительного ожидания
			If giUnsolicited Then 'имя компа набирать не нужно'
				If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "Success activated - " & sAppTitle
			else
				If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "start sendkeys..."
				Dim oSHL
				Set oSHL = WScript.CreateObject("WScript.Shell") 
				oSHL.SendKeys( sComp )
				Set oSHL=Nothing 
			End IF 
		else
			If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "Error activated - " & sAppTitle
			MsgBox "Неудачная попытка активации " & _
				chr(34)&sAppTitle&chr(34) & vbCrLf , _
				vbCritical, "Запуск Помощника"
		End IF
	
		'--- заменяем в сист.папке своей машины файл UnSolicitedRCUI.htm на "оригинальные" из Data\Original'
		If giUnsolicited Then
			'Replacing the custom UnSolicitedRCUI.htm on the local machine with the original that came with the OS.
			On Error Resume Next
			lTmp = CurDir & "\" & gs_OriginalFiles & "\UnSolicitedRCUI.htm" &" -> "& _
				gs_LocalWindir & _
				"\PCHealth\HelpCtr\Vendors\CN=Microsoft Corporation,L=Redmond,S=Washington,C=US\Remote Assistance\Escalation\Unsolicited\UnSolicitedRCUI.htm"
			fso.CopyFile CurDir & "\" & gs_OriginalFiles & "\UnSolicitedRCUI.htm", _
				gs_LocalWindir & _
				"\PCHealth\HelpCtr\Vendors\CN=Microsoft Corporation,L=Redmond,S=Washington,C=US\Remote Assistance\Escalation\Unsolicited\UnSolicitedRCUI.htm",True
			If Err.Number <> 0 Then
				MsgBox "Ошибка выполнения команды `" & lTmp & "`!" & vbCR & vbCR &_
				"Ошибка: [ " & Err.Description & " ]" & vbCR & vbCR, vbCritical, "Error CopyFile"
				On Error GoTo 0
				If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "-!- failure Restore local file UnSolicitedRCUI.htm"
			else
				On Error GoTo 0
				If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "Restore local file UnSolicitedRCUI.htm"
			End IF
		End IF
	End IF ' iPos>0 Then ' Windows 7 !!!!''

else
	MsgBox "Goodbye!"

End IF ' (sComp<>"")
If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", "---- End: " & Now()
If giDebug Then FuncAppendOneStrToTXTFile "run_RemAs.log", vbCrLf
Set fso = Nothing


'----------------функция---------------------------------------- 
'добавляет строчку в текстовый файл 
Function FuncAppendOneStrToTXTFile(FileName, StrText) 
   '------------------------Константы для задания типа открытия файла 
   Const ForReading = 1, ForWriting = 2, ForAppending = 8, OverwriteTrue = True, OverwriteFalse = False 
   ' Объявляем переменные 
   Dim  objFSO, FOut 
   ' Создаем объект FileSystemObject 
   Set  objFSO=WScript.CreateObject("Scripting.FileSystemObject") 
   ' Открываем выходной файл для записи 
   Set  FOut = objFSO.OpenTextFile (FileName,ForAppending,true) 
   ' Записываем текстовую строку в файл 
   FOut.WriteLine StrText' & vbcrlf 
   ' Закрываем выходной файл 
   FOut.Close 
   FuncAppendOneStrToTXTFile = true
	 Set objFSO = Nothing
	 Set FOut = Nothing
End Function 
'*************************************************************** 

'Get the local windows folder.
'From: Unsolicited Remote Assistance version 1.1_RD - 11/20/07'
Function GetDrive(sComputer)
	 Dim oWMIService, colItems, oItem
   Set oWMIService = GetObject("winmgmts:\\" & sComputer & "\root\CIMV2")
   Set colItems = oWMIService.ExecQuery("SELECT SystemDrive, WindowsDirectory FROM Win32_OperatingSystem")
   For Each oItem In colItems
        GetDrive = oItem.SystemDrive
        If sComputer = "." Then
          gs_LocalWindir = oItem.WindowsDirectory
        Else
          gs_RemoteWindir = replace(oItem.WindowsDirectory,":","$")
        End if
   Next
	 Set oWMIService = Nothing
	 Set colItems = Nothing
End Function

Конфигурационный run_RemAs.ini (наличие опционально - для включения/выключения режима отладки):

// 0 - обычный режим (default), 1 - отладочный
// В отдладочном режиме формируется .LOG с информацией о временных задержках запуска приложения
debug=0

Свой run_RemAs.vbs также запускаю из своей прожки с передачей параметром имени/айпи подключаемой машины.
Один и тот же скрипт используется и на ХР-системах и на Win-7, под ХР было реализовано два варианта передачи имени машины: с набором строки в окне ассистента (т.к. называемый в скрипте - "обычный режим") и режим модификации у себя файла помощника - внесением имени удаленной машины (giUnsolicited = 1 ' 1-режим подмены своего "UnSolicitedRCUI.htm"). И режим с модификацией за полгода усиленной:) эксплуатации себя не подвел, т.е. "обычный" режим в принципе из скрипта можно и убрать.
Перед использованием скрипта на ХР-системе надо в каталоге задачи создать подкаталоги:
1) Unsolicited_Remote_Assistance_1\Data\Original
2) Unsolicited_Remote_Assistance_1\Data\Custom
И сделать в них копии файла %windir%\PCHealth\HelpCtr\Vendors\CN=Microsoft Corporation,L=Redmond,S=Washington,C=US\Remote Assistance\Escalation\Unsolicited\UnSolicitedRCUI.htm

Прошу учесть, что определение версии своей ОС реализован вызовом "%comspec% /c ver" и последующим поиском выражения "Version 6." - а этот примитивный способ, конечно же, зависит от версии RUS/ENG системы, но т.к. у меня все системы - ENG, то переделывать на WMI-запрос мне не было нужды.

WBR. Roman

3

Re: Автоматизация доступа к удаленному рабочему столу

Способ 3.

alexii пишет:

Spy00000, спасибо, способ ru_sysadmins: Как mstsc'ситься к компу и админить юзера? работает.

Попробовал и я воспользоваться советом. Ожидал - теплое, а получил - мягкое
Данная рекомендация применима лишь при подключении к сессии удаленного пользователя, запущенной на терминальном сервере.
А мы же, в большинстве случаев, имеем обычные рабочие станции с WinXP или Win7 на борту. К ним таким способом вжисть не подключится! Там никакой оснасткой "Диспетчер служб удаленных рабочих столов" даже не пахнет.

2Rom5
Способ 4 Наверное стоит уточнить что предложенный скрипт (браво! очень интересно) предназначен для подключения только с компа с WinXP. В Vista и Win7 уже имеется более простой способ - msra.
Обеспечить на удаленном ПК возможность такого подключения вроде бы просто, на одном компе с ХР у меня получилось без особых проблем.
Попробовал на другом (со свежеустановленной системой) - не фига не выходит Так что скриптик для установки всех необходимых разрешений очень бы даже не помешал.

4

Re: Автоматизация доступа к удаленному рабочему столу

mozers пишет:

Данная рекомендация применима лишь при подключении к сессии удаленного пользователя, запущенной на терминальном сервере.

mozers, тоже раньше думал, что это принципиальное ограничение. Но оказалось, что нет. Работаем мы по-прежнему через терминальный сервер:

1. Запускаем клиент RDP, заходим на терминальный сервер.
2. Запускаем на терминальном сервере «Диспетчер служб удаленных рабочих столов»/«Диспетчер служб терминалов».
3. Добавляем в список его терминальных серверов имя рабочей станции методом «набор имени рабочей станции вручную».
4. В списке терминалов щёлкаем на этой рабочей станции правой кнопкой мыши и выбираем «Удалённое управление».

В итоге (при соблюдении прочих необходимых условий для удалённого управления) «вваливаемся» в сеанс текущего пользователя и можем повоевать с ним за клавиатуру и мышку.

5

Re: Автоматизация доступа к удаленному рабочему столу

2alexii
Т.е. ты подключаешься со своей workstation (WinXP) к рабочему столу другой workstation (WinXP)?
А терминальный сервер служит лишь для предварительной настройки подключения?
А если остановить сервер терминалов (или тупо выдернуть его из сети) то к рабочим станциям можно будет подключиться?

6

Re: Автоматизация доступа к удаленному рабочему столу

mozers пишет:

...
2Rom5
Способ 4 Наверное стоит уточнить что предложенный скрипт (браво! очень интересно) предназначен для подключения только с компа с WinXP. В Vista и Win7 уже имеется более простой способ - msra.
Обеспечить на удаленном ПК возможность такого подключения вроде бы просто, на одном компе с ХР у меня получилось без особых проблем.
Попробовал на другом (со свежеустановленной системой) - не фига не выходит Так что скриптик для установки всех необходимых разрешений очень бы даже не помешал.

Вот, для определения необходимости запуска msra.exe в скрипте и проверяется версия своей ОС. Дело в том, что я пользую сей скрипт одновременно на нескольких своих машинах: WinXP, Win7, а также в RD-сессии на терминальном сервере (версии сервера не помню).

А разрешения к старту Помощника, то это, конечно, удел групповых политик и единообразия настройки клиентских систем в организации.

WBR. Roman

7

Re: Автоматизация доступа к удаленному рабочему столу

Rom5 пишет:

А разрешения к старту Помощника, то это, конечно, удел групповых политик и единообразия настройки клиентских систем в организации.

Полностью согласен. Так должно быть когда системой рулят грамотные специалисты. У меня, увы, ситуация несколько иная. Доступ к GPO мне, с полгода назад, перекрыли из головного офиса (такое у них представление о безопасности). Поэтому приходится обходится правами локального администратора. Так что скрипты зачастую - единственно возможный вариант (если, конечно, исключить руки).

8

Re: Автоматизация доступа к удаленному рабочему столу

mozers пишет:

Т.е. ты подключаешься со своей workstation (WinXP) к рабочему столу другой workstation (WinXP)?

В итоге — да.

Всё делается абсолютно так же, когда ты подключаешься к обычному терминальному сеансу пользователя на одном из терминальных серверов (за исключением ручного добавления имени рабочей станции к списку серверов): сначала подключаюсь к серверу терминалов, затем запускаю «Диспетчер служб удаленных рабочих столов»/«Диспетчер служб терминалов», затем «ручками» к списку имеющихся терминалов добавляю имя рабочей станции (потому как поиск доступных терминалов идёт только среди серверов), затем ПКМ и — «Управление». Вваливаюсь в сеанс пользователя. Визуально это выглядит как внутри моего клиента RDP открывается ещё один клиент RDP — тот, который установлен на сервере терминалов, к которому я подключён.

mozers пишет:

А терминальный сервер служит лишь для предварительной настройки подключения?

Нет. Управление сеансом пользователя, как и обычно, возможно только когда заходишь на сервер терминалов. И уже затем, оттуда, можно «пристыковаться» к сеансу пользователя — будь то сеанс на этом же самом терминальном сервере, сеанс на другом терминальном сервере или локальный сеанс на удалённой рабочей станции.

Мимо сервера терминалов через RDP подключиться к удалённой рабочей станции возможно только под своим именем, одновременно выкинув пользователя из его сеанса.

mozers пишет:

А если остановить сервер терминалов (или тупо выдернуть его из сети) то к рабочим станциям можно будет подключиться?

Если сервер терминалов в сети один — нет. А так можно через любой из имеющихся.

9

Re: Автоматизация доступа к удаленному рабочему столу

Я по сю пору предпочитаю для большинства операций, не требующих GUI, но требующих интерактивности, Remote Console из комплектов «Resource Kit» для NT4/2000: установка на удалённую машину производится напрямую с локальной машины, доступен полноценный сеанс командной строки со всеми функциональными клавишами, работают консольные приложения, не использующие принцип терминала, в том числе в этом сеансе изумительно работает и Far Manager.

10

Re: Автоматизация доступа к удаленному рабочему столу

alexii пишет:

Я по сю пору предпочитаю для большинства операций, не требующих GUI, но требующих интерактивности, Remote Console из комплектов «Resource Kit» для NT4/2000: установка на удалённую машину производится напрямую с локальной машины, доступен полноценный сеанс командной строки со всеми функциональными клавишами, работают консольные приложения, не использующие принцип терминала, в том числе в этом сеансе изумительно работает и Far Manager.

Я пользуюсь "терминальной" командной строкой из под скрипта утилиткой Руссиновича: psexec.exe /accepteula \\удал.комп cmd.exe
В основном - для очень быстрого удаления емкого каталога "со всеми потрохами" командой "rd /s /q", иногда для переброса больших инсталляций с одного удаленного компа на другой в том же подразделении, иногда для подтягивания политик компа - "gpupdate /force /target:computer" - но, вот, в случае gpupdate с интерактивностью как раз и проблемы - подверждение клавишей "Y" перезагрузки надо делать вслепую(

По сему интересно было бы узнать поподробнее об "эНТёвой" консоли - как ставится, какие возможности.

WBR. Roman

11

Re: Автоматизация доступа к удаленному рабочему столу

Rom5 пишет:

По сему интересно было бы узнать поподробнее об "эНТёвой" консоли - как ставится, какие возможности.

Вопрос про «Remote Console»?

12

Re: Автоматизация доступа к удаленному рабочему столу

alexii пишет:
Rom5 пишет:

По сему интересно было бы узнать поподробнее об "эНТёвой" консоли - как ставится, какие возможности.

Вопрос про «Remote Console»?

Да. Хотелось бы заполучить ее из комплекта того "легендарного":) ResourceKit и попробовать в бою.

WBR. Roman

13

Re: Автоматизация доступа к удаленному рабочему столу

Rom5, пробуйте: Resource Kit - Remote Console.rar.

14

Re: Автоматизация доступа к удаленному рабочему столу

Хотел я как-то разобраться с удалённым помощником "изнутри" так сказать, на уровне ActiveX, дабы понять реализацию клиент-сервера, но дальше CreateObject ( "SAFRCFileDlg.RASetting" ) дело не зашло.
Отпугнуло грозное ругательство посреди файла RAClient.htm

var L_ERRACCESSDENIED_Text = "Прямой запуск этой страницы запрещен. ";

Энтузиастов же приглашаю в "%WINDIR%\pchealth\helpctr\System\Remote Assistance".
Ну да не суть.

А я даже не удивляюсь что никто [не слышал?] не упомянул про такую замечательную вещь как «NetMeeting», позволяющую расшаривать не только рабочий стол текущего пользователя, но и отдельные окна приложений.
Помимо всего имеет ещё кучу возможностей (а также экспортирует не особо юзабельный com-Абъект "NetMeeting.App.1")

win+R > conf.exe

Мало того. Программа имеет сервис для расшаривания рабочего стола - mnmsrvc.exe "NetMeeting Remote Desktop Sharing"  (конфигурация которого выполняется через сам NetMeeting).

Программу незаслуженно обошли стороной, не выделив для неё ни единого ярлыка в системе.
Как следствие была исключена из системы, по словам источника, начиная с Vista.
[ пользователи сидящие на висте и 7-ке, проверьте пожалуйста существование %programfiles%\netmeeting\conf.exe ]

15

Re: Автоматизация доступа к удаленному рабочему столу

alexii пишет:

Rom5, пробуйте: Resource Kit - Remote Console.rar.

Захотел было тоже пощупать тулзу. Но лишь пошёг трафик и время, "просматривая рекламу" и пытаясь получить ссылку на закачку.
Клятый ifolder...

Не могли бы перезалить на http://slil.ru?

16

Re: Автоматизация доступа к удаленному рабочему столу

Было семь загрузок — значит, кто-то загружал. А реклама там откуда? Я не добавлял. Размер архива — чуть больше мегабайта. Сейчас сам загрузил без какого-либо просмотра рекламы.

Впрочем, пробуйте.

P.S. Ещё раз напомню, что всю прелесть Remote Console можно ощутить лишь запустив под ней на удалённой машине Far Manager. Главное при этом не забываться, дабы не запустить случайно какое-либо GUI-приложение .

17

Re: Автоматизация доступа к удаленному рабочему столу

alexii пишет:

А реклама там откуда? Я не добавлял.

Причуды хостинга.

На данный момент иностранный трафик у этого файла превышает российский.
Вы можете получить этот файл, только если посетите сайт наших рекламодателей, помогающих оплачивать наши сервера и каналы. Нажмите сюда, чтобы перейти к выбору рекламодателей.

18

Re: Автоматизация доступа к удаленному рабочему столу

Аскет, спасибо, ясно.

19

Re: Автоматизация доступа к удаленному рабочему столу

про doit() уже было ?

Я конечно далек от мысли... (с)

20

Re: Автоматизация доступа к удаленному рабочему столу

smaharbA, вы о чём?

21

Re: Автоматизация доступа к удаленному рабочему столу

про doaccept() в htm

Я конечно далек от мысли... (с)

22

Re: Автоматизация доступа к удаленному рабочему столу

smaharbA пишет:

про doaccept() в htm

Это завуалированный полунамёк?
Мне попрежнему непонятно.

OFF:
Боюсь что такие стеганограммы мне не под силу.  = (
Я уже пытаюсь читать между строк, но всё никак не улавливаю скрытый смысл...

23

Re: Автоматизация доступа к удаленному рабочему столу

Аскет пишет:
smaharbA пишет:

про doaccept() в htm

Это завуалированный полунамёк?
Мне попрежнему непонятно.

OFF:
Боюсь что такие стеганограммы мне не под силу.  = (
Я уже пытаюсь читать между строк, но всё никак не улавливаю скрытый смысл...


"doaccept() в htm" - это о фишке автоматического подтверждения на Windows XP подключаемой сессии "Offer Assistance" (п.4 стартового сообщения) путем вставки вызова "doaccept()" - функции обработки клика на "Yes" - сразу же на открытии htm-страницы Помощника.

Я, когда делился своим скриптом вызова Помощника, об этой несложной реализации упоминал, но сами файлы не приводил. Если кому интересен мой вариант автоматизации - можно взять архив с батниками и подменяемыми файлами: run_remas-vbs-cmd

WBR. Roman

24 (изменено: Rom5, 2012-05-11 19:26:06)

Re: Автоматизация доступа к удаленному рабочему столу

Хмм.. Оказывается в Вин-7 есть встроенный инструмент запуска процесса на удаленной машине (наподобие функционала psexec.exe): winrs - Windows Remote Shell

К примеру, командой:

winrs -r:удален_комп cmd.exe

можно консольно работать на удаленном компе. Можно указывать имя-пароль пользователя, с правами которого запускаем процесс.

Хэлп: winrs -?

WBR. Roman

25 (изменено: Rom5, 2012-05-15 15:02:20)

Re: Автоматизация доступа к удаленному рабочему столу

Коллеги, нашелся способ как свитчить пользователей Windows-7, которые опрометчиво:) надолго отлучились от рабочего места, оставив машину с массой открытых задач на залоченной системе, а админу таки надо ПО поставить или что-то под своей сессией выполнить.

Запускаем от админской учетки строку:

winrs -r:{pc} %windir%\System32\tsdiscon.exe console /V & Pause

где меняем {pc} на имя удаленной машины.

В результате - на станции без всяких подтверждений консольная сессия свитчится, так, как будто бы кто-то в окне разблокировки кликнул на команде "Switch User".

В успешности процесса можно убедиться тем, что определение скриптом "username" должно начать возвращать Null, т.е. уже можно зайти на машину рем-десктопом без логоффа сессии пользователя (или сам запуск RDP перестанет предупреждать о наличии консольной сессии). После работы не забываем закрыть свою сессию, а вернувшийся пользователь разблокирует машину уже с обязательным вводом и своего логина и возвращается в свои открытые задачи.

Само собой, что вместо WindowsRemoteshell ("winrs -r:{pc}") можно пользовать что угодно - свой скрипт запуска удаленного процесса, привычный psexec или шедул задачи). Главное - процесс запускать на удаленной машине, иначе сессию не найдет.

WBR. Roman

26

Re: Автоматизация доступа к удаленному рабочему столу

Rom5, это работает в домене?

27 (изменено: Rom5, 2012-05-16 15:49:30)

Re: Автоматизация доступа к удаленному рабочему столу

alexii пишет:

Rom5, это работает в домене?

Я на доменных машинах в своей конторе и испытывал. Правда то были машины айтишников (их станции да и они сами в несколько отличных юнитах домена), а завтра попробую "в бою" с обычным пользователем.

[добавлено 16/05/2012]
Сегодня Win7-пользователь, у которого я сидел в Ассистенте (вернее в remote-connect от SCCM) и инсталлил ПО, попросил по окончанию работ залочить его машину, т.к. он отлучается.
Я на нее успешно отправил SwitchUser - это даже круче, чем просто залочил)

WBR. Roman

28

Re: Автоматизация доступа к удаленному рабочему столу

alexii пишет:

Rom5, это работает в домене?

В моем - работает.

WBR. Roman

29

Re: Автоматизация доступа к удаленному рабочему столу

Rom5, а с Windows XP?

30

Re: Автоматизация доступа к удаленному рабочему столу

alexii пишет:

Rom5, а с Windows XP?

На XP тоже в System32 есть tsdiscon.exe, но в нашем домене у ХПшных машин функция переключения пользователей отключена (может просто ее забыли отключить и для Вин-7-мых машин или она там иначе отключается), поэтому ХП-машина этой командой просто лочится текущим пользователем.

WBR. Roman

31

Re: Автоматизация доступа к удаленному рабочему столу

Rom5, расскажите мне про эту функцию.

32

Re: Автоматизация доступа к удаленному рабочему столу

Как точно она называется - не в курсе, со слов моих коллег - достаточно заведения машины в домен (т.е. не важно какой домен - наш/не_наш - тут я был не прав), но мол сама система ВинХР не может при наличии загруженных задач одного пользователя сменить консольного пользователя на другого без потери данных первого.

WBR. Roman

33

Re: Автоматизация доступа к удаленному рабочему столу

Насколько я помню — это ограничение «вообще» (дабы не делали из клиентских ОС сервера терминалов). И я полагал, что для Windows 7 оно сохранилось.