Миру - мир. А Вам - пломбир!
Доброго времени суток!

Дано: сервер (WinXP) и клиент (Win7) к которым есть полный доступ.
Задача: на сервере запускается софт, для которого критично важно непрерывное наличие рабочего стола с постоянным стабильным конкретным разрешением экрана.
Проблема: соединяюсь с ним по rdp, всё работает. После отключения – софт падает с ошибками (видимо, отрубается рабочий стол).

Вопрос: как оставить работать сервер без внешних подключений, но с активным рабочим столом и конкретном стабильном разрешении экрана?

Спасибо!

@темы: Windows, Вопрос, RDP

Комментарии
21.02.2014 в 15:41

I'm not dead... yet.
настроить автоматический логин на сервере под каким-либо юзером. и заходить не по rdp, а по radmin.
хотя вообще странно, что это за серверный софт такой, которому обязательно нужен рабочий стол... может софт просто кривой?
21.02.2014 в 16:18

Миру - мир. А Вам - пломбир!
> настроить автоматический логин на сервере под каким-либо юзером
Возможно, плохо понял ответ. Автологин настроен. Сейчас захожу только по VNC так как не меняет десктоп хотя бы между сессиями управления в отличии от RDP. Но как это поможет не менять окна и десктоп когда не подключен никто чтобы софт не падал?

> может софт просто кривой?
Увы, специфика задачи такова, что либо задача не решаемая вообще, либо подобными костылями. Он работает ориентируясь на цвета пикселей в конкретных (относительно захардкоженных) координатах. Поэтому ему нужен десктоп с определённым разрешением. Но он вполне автоматический, хочется под него выделить отдельную виртуалку на сервере и получать данные простыми запросами.
21.02.2014 в 18:13

Православные красные звёзды над Кремлём канонично горят ©
соединяюсь с ним по rdp, всё работает. После отключения
Как происходит отключение, жмёте крестик сверху?
21.02.2014 в 18:16

Миру - мир. А Вам - пломбир!
SpiritOK, да.
28.02.2014 в 17:56

I'm not dead... yet.
> Сейчас захожу только по VNC так как не меняет десктоп хотя бы между сессиями управления в отличии от RDP. Но как это поможет не менять окна и десктоп когда не подключен никто чтобы софт не падал?
Когда вы отключаетесь от VNC, рабочий стол по идее пропадать никуда не должен. И разрешение экрана само по себе смениться не может.

> Он работает ориентируясь на цвета пикселей в конкретных (относительно захардкоженных) координатах.
Наверное какой-нибудь бот для онлайн игры?
28.02.2014 в 18:09

Миру - мир. А Вам - пломбир!
> Когда вы отключаетесь от VNC, рабочий стол по идее пропадать никуда не должен. И разрешение экрана само по себе смениться не может.
Да, действительно, вы правы, VNC решает проблему.
Я понаблюдал изменения и только через пару дней (когда вернулся к задаче) понял, что разрешение меняется после логина по rdp или в следствии глюка самого по. Коллега коннектился к серваку по rdp пока я мучал vnc.

> Наверное какой-нибудь бот для онлайн игры?
Увы, хуже.
28.02.2014 в 19:05

I'm not dead... yet.
Скептичный циник, жесть какая. Тогда беру свои слова обратно, тут по-другому никак)
01.03.2014 в 00:07

Православные красные звёзды над Кремлём канонично горят ©
Хм.. А если вывести окно с виртуалкой на монитор, после чего подцепиться к ней по РДП с другой тачки, будет моргать и перестраивать экран? Даже если выставить одинаковое разрешение в виртуалке и в настройках РДП? Мы как-то с этим боролись, вроде через Teamviewer, там совместное использование уже имеющейся сессии наступает.

данные внутри очень урезанного IE
А хэндл окна получить можно? У AutoIt были неплохие нативные методы общения с ИЕ, главное к окну прицепиться. Даже вытащить исходник страницы и распарсить уже на своей стороне можно. На крайняк, брать координаты окна и скармливать парсеру, рестартуя его из внешнего скрипта. Могу попробовать заморочиться, если можно будет пощупать, как оно там внутри виртуалки живёт.
01.03.2014 в 00:21

Миру - мир. А Вам - пломбир!
SpiritOK, не, rdp принудительно меняет разрешение. Например, если окно было развёрнуто, произошло новое подключение по rdp, то разрешение меняется. Даже если новое становится таким же, как старое, то скачок сносит настройки окна и оно меняет свои координаты. Rdp в данной задаче использовать не получится. Vnc справляется со своей задачей: во-первых, даёт вручную менять разрешение, а, во-вторых, не меняет его при ноаом коннекте.
01.03.2014 в 00:29

Миру - мир. А Вам - пломбир!
SpiritOK, то по, про которое я писал, на 80% состоит из скрипта на autoit (: Проблема в том, что с помощью winapi невозможно получить никакой хандлер IE. Просто потому, что он определяется как Citrix Viewer и API у него другое плюс закрытое для vba-подобных языков. Более того, в Citrix запускается браузер, который смотрит веб-мордой в другую виртуалку и даже оттуда доступа по API нет. У окна есть тупо заголовок и класс "virtual vieaver", всё. Ему даже запросы _winapi_key* не доходят (да, даже сочетание клавиш). Поэтому на autoit у меня уже написан кликер, который ориентируется по пикселям и цветам (цвет областей меняется после кликов, цвет кнопок в пределах погрешности различный), кликает, открывает html фрейма, копипастит (при этом на виртуалку там выделено так мало ресурсов, что копирование в буфер происходит около двух секунд), но оно хранится в буфере Citrix, а не в виндовом (через winapi даже этот буфер не получить) поэтому приходится открывать notepad.exe и слать ctrl+v чтобы сохранить грёбаный html нужного фрейма.
01.03.2014 в 00:33

Миру - мир. А Вам - пломбир!
Возможно, у Citrix есть какое-то API для работы из vba/autoit? Был бы очень благодарен за ссылку. Обращался к их поддержке только, но безрезультатно.
05.03.2014 в 12:24

Жесткая система, однако... Я что-то не совсем понял - при отключении RDP разрешение сбрасывается на какое-то типа 800х600? Если так, то может стоит ориентироваться на него? Честно говоря, странно, хотя на XP таким образом через RDP не подключался, только на 2003 и выше - там не наблюдал сброса настроек.

В идеале, КМК, подключить монитор, но учитывая, что это виртуалка... ППЦ задачка))
05.03.2014 в 14:27

Миру - мир. А Вам - пломбир!
> при отключении RDP разрешение сбрасывается на какое-то типа 800х600?
При коннекте по rdp виртуалка меняет своё разрешение под размеры окна клиента. То бишь, не важно какое было – коннект по rdp передёрнет разрешение и поменяет его плюс не позволяет его менять вручную. VNC так не делает и даёт выбрать разрешение из списка в панели управления виртуалки.
То есть, оно принципиально нестабильно. После дисконнекта по rdp этот хренософт не запускается вообще так как не может определить разрешение – я не имею опыта работы с rdp (всегда хватало ssh для моих задач), возможно, винда отрубает рабочий стол если он не используется? При активном vnc-сервере всё работает как надо.
14.03.2014 в 17:28

I'm not dead... yet.
Еще меня посетила такая мысль. Если можно определить хэндл окна, то можно ведь и поменять его координаты и размер (если стиль окна это позволяет), разве нет?
И да, RDP вроде бы после отключения пользователя завершает его сеанс. И еще он поддерживает подключение нескольких пользователей и у каждого будет свой рабочий стол. Короче, его принцип работы довольно сильно отличается от radmin\vnc\team viewer.
15.03.2014 в 20:37

Миру - мир. А Вам - пломбир!
Just-a-Shadow, можно, но только в случае обращения через winapi. К сожалению, Citrix не поддерживает передачу winapi вызовов внутрь виртуалки.

> И да, RDP вроде бы после отключения пользователя завершает его сеанс.
Да, возможно так: после отруба по rdp переставал отвечать на запросы wamp-стек, работающий из-под того же пользователя.
19.06.2015 в 03:26

С VMWare прокатывает, сам делал. Как раз писал бота для браузерки :) Подключался по рдп и открывал окно варьки, бот эмулировал нажатия мыши по координатам экрана, ничего не ломалось. Только запускать виртуалку нужно в VMWare Workstation (VMWare Player меняет разрешение при изменении окна плеера, либо поставить настройку, чтобы PLayer не менял разрешение). Единственный вопрос в том, чтобы в виртуалке было нужное разрешение в списке выбора, но это тоже решаемо.