Проектирование: Способы запуска интерактивного приложения на клиенте из сессии Citrix? #306981


#0 by spock
Интересует как делают другие - cookbook так сказать. Нужно из сессии Citrix запустить IE и показать его пользователю.
#1 by FreeFin
Опубликовать/Запустить приложение/вставить в логон-скрипт...что нужно, для что нужно...человеческим можешь объяснить?
#2 by spock
объясняю человечески: нужно запустить приложение на клиентской машине (в нашем случае IE нужно запустить). Нажали на кнопочку в 1с (или хоть где) из сессии Citrix, а на клиенте(!!) открылся IE. Публикуя приложение, мы его запускаем в адресном пространстве самого сервера. Нужно этого избежать. ps: может есть другие варианты? отличные от моей реализации. пока не внедрили :)
#3 by FreeFin
Кратенько понял. Ты сидишь дето (на консоле напр.) Жмешь кнопу в своей сессии/който программе, а у клиента (сначала определиться у какого/каких) вылазиит на экране, в его сессии, иашка с картинками? Так?
#4 by Молния
закачиваешь себе PStools и сайта мелкософта. Там среди тузлов есть pcexec.exe. Он способен запустить прогу на удаленной тачке под указанным юзером. А в 1С на кнопку вешаешь команду системы запустить этот pcexec с указанными заранее параметрами
#5 by Молния
тока хз как ты будешь разбираться на каком компе надо запустить
#6 by smaharbA
))))))
#7 by smaharbA
Для продвинутых и того просче, скрипт по отслеживанию тогоже что и в и запуск построчно, в файлике еще и проги с параметрами путями укажешь, все просто как апельсин
#8 by spock
Есть сервер под управлением Citrix MF/PS: "ServerMF"; На этом сервере установлена 1с. Есть клиент, с которого заходят на сервер "ServerMF": "Ivan-IV"; 1. Пользователь залогинился в видну на "Ivan-IV", кликнул по ярлыку "ICA Connections" и попал на сервер "ServerMF"; 2. Далее пользователь в сессии Citrix на сервере "ServerMF" кликнул по ярлыку "1С Предприятие", выбрал базу и ввел пароль для входа в базу "1С"; 3. Далее пользователь открыл обработку/справочник/документ и нажал на кнопку - после чего на клиенте "Ivan-IV" должен запуститься процесс "IEXPLORE.EXE";
#9 by smaharbA
при старте 1с в справочник пользователей запишет
#10 by smaharbA
+ для цитрикса есть прекрассный ком объект (в составе его) определит все и даже РДП сессии
#11 by Молния
прикольно. просто не все вкурсе что для psexec надо что бы с удаленной тачки был доступ к шаре admin$. Т.е. тачка должна быть с XP Pro и у юзера должен быть пароль. а на серваке надо прописать в control userpasswords2 что к тачке нужно подключаться с таким то паролем.
#12 by spock
банально
#13 by FreeFin
У мне Control Agent для этих целей прикручен. Еще банальнее? По файл-флагам задачи фасует. А шедулер виндовый я не пользую, нехороший он )))
#14 by spock
А если сервер и клиент находятся в разных сетях? Так же могут быть закрыты порты 135-139.
#15 by spock
+0 у меня получилось запустить по такой схеме: Процедура Сформировать    Перем оCtxShl;    Перем стрПутьIE, стрКомСтрока, стрURL;        стрURL = "http://www.neta.ru/";        оCtxShl = СоздатьОбъект("CtxShlCom.server");        // Создается виртуальный канал    //    оCtxShl.Create;        // Определяется путь до Program Files на клиенте    //    стрПутьIE = оCtxShl.GetFolderPath;    стрПутьIE = стрПутьIE + "Internet ExplorerIEXPLORE.EXE";        // Создается процесс на клиентском компьютере по командной строке:    // ""C:Program FilesInternet ExplorerIEXPLORE.EXE" "http://www.neta.ru/""    //    стрКомСтрока = """" + стрПутьIE + """" + " " + """" + стрURL + """";        оCtxShl.ExecCommandLine(стрКомСтрока); КонецПроцедуры // Сформировать
#16 by spock
этот вариант не подходит. Клиент может зайти на сервер тонких клиентов (который сам является Citrix сервером), а с него уже уйти на основной Citrix сервер. Получается, что на первом сервере (тонких клиентов) уже куча сеансов (а могут даже с одними и теми же логинами). И в каком сеансе будет запущен IE? В консоли.
#17 by spock
+16 по этой же причине не все хорошо с
#18 by t80
нахер вам это все надо? живите проще
#19 by t80
+18 вам нужен спутниковый интернет wi-fi, с ним это все просто реализуется
#20 by t80
можно еще с рейдом поиграться
#21 by SnarkHunter
А может просто использовать НайтиЗначение?
#22 by Ковычки
откудова такой объект ? это set c = CreateObject("MetaFrameCOM.MetaFrameSession") call c.Initialize(6, "", "", -1) msgbox c.ClientAddress msgbox c.ClientName знаю, ну и подобное, а про не слыхал
#23 by spock
логично, что не слышал.
#24 by spock
$ля, это что за поток сознания?
#25 by smaharbA
просвети всеже, чито это было, в
#26 by spock
драйвер виртуального канала ICA + com-server
#27 by spock
+26 документации пока нет.
#28 by smaharbA
ужос, ради этого писать ком и сервис...
#29 by spock
как оказалось, это не сложно.
#30 by smaharbA
а че там для драйвера IAM ?
#31 by spock
IAM?
#32 by spock
+31 что за IAM?
#33 by smaharbA
Identity and Access Management
#34 by spock
а что для драйвера IAM? развивай тему, ничего не понял, что хотел узнать от меня :)
#35 by vde69
можно пойти примерно таким путем 'Скрипт демонстрирует возможность принудительного завершения процессов "1cv7s.exe" на всех компьютерах 'указанного домена. Данный код можно применять непосредственно перед пакетным запуском 1С:Предприятия, 'требующим монопольного входа в базу данных (например, при резервном копировании). 'ВНИМАНИЕ! Задайте нужное значение переменной "DomainName"! 'ВНИМАНИЕ! Для успешной работы скрипта его желательно запускать с правами администратора домена. 'ВНИМАНИЕ! Чтобы опробовать скрипт, не производя деструктивных действий, достаточно закомментировать 'оператор "Proc.Terminate". Option Explicit On Error Resume Next Dim DomainName 'Имя домена DomainName = "MYDOMAIN" Dim StrResult 'строка результата работы всей программы StrResult = StrResult & CStr(Now) & " начало работы скрипта" & VbCrLf Dim ADSI Set ADSI = GetObject("WinNT://" & DomainName) ADSI.Filter = Array("computer") Dim Comp 'компьютер Dim WMI 'объект WMI Dim Proc 'процесс Dim CurrName 'имя текущего компьютера CurrName = GetNameComp 'Цикл по компьютерам домена For Each Comp In ADSI    If Comp.Name <> CurrName Then        Set WMI = GetObject("winmgmts:{ImpersonationLevel=Impersonate}!\" & Trim(Comp.Name) & "RootCIMV2")        If Err.Number=0 Then            'Цикл по процессам компьютера            For Each Proc In WMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '1cv7s.exe'")                StrResult = StrResult & _                            CStr(Now) & " Computer=" & Comp.Name & " PID=" & Proc.ProcessId & _                            VbCrLf                'Завершение процесса                'Proc.Terminate            Next 'Цикл по процессам компьютера        Else 'Не удалось соединиться с компьютером            If Err.Number <> 462 Then 'The remote server machine does not exist or is unavailable                StrResult = StrResult & _                              "    " & CStr(Now) & " Computer=" & Comp.Name & " ERROR " & Err.Number & _                              VbCrLf            End If        End If        Err.Clear    End If Next 'Цикл по компьютерам домена StrResult = StrResult & CStr(Now) & " конец работы скрипта" & VbCrLf 'Функция возвращает путь к каталогу временных файлов текущего пользователя Function GetTempPath    GetTempPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") End Function 'GetTempPath 'Функция возвращает имя текущего компьютера Function GetNameComp    GetNameComp = CreateObject("WScript.Network").ComputerName End Function 'GetNameComp
#36 by spock
изменив этот скрипт, запускать на клиентах приложения? Читай
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С