Vnc mirror driver что это

Обновлено: 04.07.2024

UVNC MD SDK

Установка UltraVNC 1.0.2

Ничего сверхсложного, только все на английском языке. Хотя нам, айтишникам, положено знать инглиш на базовом уровне.

Привожу последовательные скриншоты (снимки экрана) процесса установки с комментариями и советами:

Поехали! Запускаем файл UltraVNC-102-Setup.exe

uvnc102_1

uvnc102_2

uvnc102_3

uvnc102_4

uvnc102_5

А вот здесь подробнее. По умолчанию галочками отмечены все пункты. В общем случае так и должно быть, хотя я честно не вникал, что означают последние 2 пункта. По поводу первых 3 пунктов:

uvnc102_6

uvnc102_7

Очень важная часть установки! Первые две галочки должны стоять.

uvnc102_8

uvnc102_9

uvnc_91

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

uvnc_92

uvnc_93

В разделе Misc. возможны разные варинаты настройки. Привожу свои:

uvnc102_10

Manual Uninstall

net stop vnccom (stop communication manager service)
Driver mv2 doesn't use the vnccom , only needed with the old drivers Under XP: Control Panel ⇒ System ⇒ Hardware ⇒ Device Manager ⇒ Display Adapters ⇒ Uninstall mirror driver .
Under W2000: W2000 does not allow video drivers to be removed while running.
Trick: Remove vncdrv.sys (that is in system32/drivers), and reboot. You now can remove the driver the same way as with XP, via the device manager.

UltraVNC. Установка и настройка (Windows XP).

Как и обещано, публикуем подробный материал об удаленном управлении рабочими столами на примере UltraVNC.

Для начала советую определиться с версией. Например, для Windows XP оптимальный вариант UltraVNC 1.0.2. Для Windows 7 или 8 берем последнюю на сегодня версию: UltraVNC 1.1.9.3.

Итак, мы скачали версию 1.0.2. Вот так выглядит установочный файл.

Значок, видимо, намекает на большого брата, который видит всех ;).

ВНИМАНИЕ! Не забывайте, что установка любых программ производится из под учетной записи администратора Windows. Конечно, бывают исключения, но давайте поступим грамотно.

License for usage with ultravnc

1. GRANT OF LICENSE:

UVNC bvba hereby grants Ultr@VNC Team -non-exclusive, royalty-free, worldwide, perpetual license to distribute, use the
software product "Mirror driver" in binary form for their remote controle software. Ultr@VNC Team hereby grants the end-user the right to use and distribute the software product "Mirror Driver" with "Ultr@VNC".

2. LIMITED WARRANTY


NO WARRANTY. To the maximum extent permitted by applicable law, We expressly disclaims any warranty for the SOFTWARE PRODUCT
"Mirror Driver". The SOFTWARE PRODUCT "Mirror Driver" and any related documentation are provided "as is" without warranty of any kind, either express or implied, including, without limitation, the implied warranties of merchantability or
fitness for a particular purpose. NO LIABILITY FOR CONSEQUENTIAL DAMAGES. To the maximum extent permitted by applicable law, in no event shall we be liable for
any damages whatsoever (including, without limitation, damages for loss of business profit, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of, or inability to use, this product.

Supported OS

The mirror driver is supported on

Windows 2000
Windows 2003
Windows XP
Windows 2008
Windows Vista
Windows 7

Commercial license

Binary license
Price: 1000EU
UVNC bvba hereby grants You a nonexclusive, nontransferable, perpetual, worldwide license to distribute, use the
software product "Mirror driver" in binary form for your software.

Source code:
Price: 4500EU
UVNC bvba grants Licensee a nonexclusive, nontransferable, perpetual, worldwide rightto use the Source Code for the mirror
driver. Licensee agrees and acknowledges that the Source Code is proprietary, valuable, and not generally known in the
industry. Licensee agrees that it will maintain, through reasonable means, the confidentiality of the Source Code, and
will not disseminate or allow unrestricted access. Licensee shall not distribute the Source Code to anyone other than
employees and software developers of Licensee's organization or third party contractors working on behalf of Licensee’s
organization with a need to know. Licensee may be held legally responsible for any infringement of intellectual property
rights that is caused or encouraged by Licensee's failure to abide by this Agreement.

If you optain a source code license after buying a binary license, the source code license Price is 3500EU.

info: This email address is being protected from spambots. You need JavaScript enabled to view it.

Installation

If you have a previous version installed, it is recommended to uninstall it first, by doing the following: setupdrv.exe uninstall
Installation is done by setupdrv.exe install
The program setupdrv.exe is located in the folder you've chosen during the driver installation.

UltraVNC как замена TeamViewer


Предупреждение: все прилетевшие тапочки будут проданы, помидоры – съедены, яйца – пожарены, испорченные – выброшены. Те, кто думают, что мы маемся фигней – вы угадали, возьмите с полки пирожок. Автор не призывает бросать мешки грудью на амбразуры. Он вообще ни к чему не призывает – он же не политик и не гражданин с активной гражданской позицией. А вот желающих подискутировать – милости просим. Сегодня я буду рассказывать вам занимательную историю о замене Teamviewer на UltraVNC.

Зачем вообще нужны такие заморочки, ведь Teamviewer такой офигенный? В моем случае это обусловлено несколькими причинами. В работе была нужна система удаленного управления серверами и рабочими станциями пользователей, а их у нас на поддержке >1000. Teamviewer контролируется сторонней компанией и неизвестно, что она делает с трафиком. Teamviewer не пользуется доверием у некоторых наших клиентов. Нам нужны были уникальные ID для всех пользователей. Ну и его стоимость для достаточно большой инфраструктуры очень приличная, что тоже повлияло на решение. При этом у нас достаточно широкие каналы связи и нет жестких требований к скорости отклика, что нивелировало основной недостаток UltraVNC, а именно — более низкую скорость работы.

Как это работает

Исходная архитектура VNC протокола слабо предназначена для работы через глобальные сети. Для этого есть несколько причин.

  • Отсутствие шифрования передаваемых данных.
  • Короткие пароли (8 символов в современном мире? Вы серьезно?)
  • Отсутствие сквозной нумерации серверов, подключение по IP.
  • Невозможность работы из-за NAT.


Клиентский UltraVNC сервер подключается к нашему репитеру, который одним своим портом (нестандартным) смотрит в интернет и принимает подключения. А мы подключаемся к этому же серверу по внутреннему адресу изнутри и уже оттуда — к клиенту. Соединения шифруются RSA2048/AES256. Так как серверы и клиенты цепляются на разные порты, можно гибко ограничить, у кого и откуда есть право подключения, не трогая возможность UltraVNC-серверов подключаться к репитеру.

Установка UltraVNC репитера

Так как репитер будет единственным публичным сервисом, его настройке надо уделить максимум внимания. Использовать нестандартные порты, блокировать подозрительную активность, например сканирование портов и жестко определять, откуда можно будет подключаться Viewer-ам. Но начнем с самого простого – установки и настройки. Сервер настраивается во втором режиме, третий (через SSL) требует специальных сборок просмотрщиков и серверов, поэтому его решили не использовать.

Итак, заходим на сервер, которому предначертано стать будущим репитером и начинаем колдунство. Установка будет описана для Ubuntu 16.04. Ставим необходимые зависимости.


Создаем пользователя для запуска репитера.


Скачиваем исходники репитера.


Распаковываем репитер и заходим внутрь папки.


Устанавливаем репитер в систему.


У нас все готово к успешному запуску, но надо немного изменить файл настроек. Поэтому открываем в любимом редакторе /etc/uvnc/uvncrepeater.ini и приводим настройки к следующему виду:


По странной прихоти автора номер порта отличается от стандартного. У себя нестандартный порт мы выставим на файрволе.


Немного повышаем уровень логирования, чтобы видеть информацию о бинде портов и подключениях в логе.


Запрещаем оба режима, оставляем только 2, потому что первый работает по другому принципу и может создавать для нас уязвимость.

Сохраняем файл и тестируем корректность его настроек.

Все в порядке, можно запускать как стандартную службу. Останавливаем репитер с помощью Ctrl+C и запускаем уже как сервис.


Проверяем, что служба запустилась.


Файл лога можно посмотреть по адресу /var/log/uvncrepeater.log.

Установка и настройка UltraVNC сервера

Итак, первое препятствие между нами и нирваной рухнуло с треском. Теперь мы можем подключаться к клиентам за NAT. На очереди два следующих – отсутствие сквозной нумерации и шифрования. Настраиваем тестовый UltraVNC-сервер. Так как у нас основной парк управляемых машин – это Windows, установка сервера и клиента будет расписана для них.

Скачиваем необходимые компоненты по ссылкам. Компоненты должны иметь архитектуру (x86 и x64), соответствующую архитектуре компьютера, на который происходит установка сервера.

Запускаем установщик UltraVNC сервер. Принимаем условия соглашения и нажимаем Next >.


Вчитываемся с интересом и Next >.


Выбираем папку для установки. Не рекомендуется менять без особой необходимости. Что жать, думаю, и так понятно.


Выбираем установку только UltraVNC Server и нажимаем Next >.


Жмем Next > и никаких гвоздей.


Ставим указанные галочки, чтобы установить UltraVNC сервер как системную службу и запустить его сразу после установки. Жмем Next >.


Смотрим на этот экран с умным видом, потом нажимаем Install.


Здесь есть только одна кнопка для нажима. Жмем на нее.


Снимаем галочку, чтобы не смотреть какие-то последние версии, и жмем Finish.


Кнопконажимательная часть миссии закончена. Теперь надо доустановить необходимые компоненты и настроить сервер. Копируем плагин безопасности в папку UltraVNC.


Распаковываем папку с драйвером.


Заходим в папку с соответствующим драйвером и устанавливаем его путем запуска install.bat.

Внимание! Установку драйвера надо производить с административными правами. Причем запустить от имени администратора только install.bat не получится, потому что он запускает еще одну программу и она будет работать уже не от администратора. Поэтому запускаете консоль от администратора, идете в папку установки драйвера и запускаете install.bat оттуда.

Я выполнял тестовую сборку по XP с правами администратора, потому мне это не потребовалось.


Запускаем настройки VNC сервера – uvnc_settings.exe.


Переходим на вкладку Security.

  • В разделе Authentication выставляем два пароля. Пароли должны быть одинаковыми, состоять из цифр и больших и малых латинских букв, не более 8 символов длиной.
  • В разделе Encryption ставим галочку Use, выбираем из выпадающего списка наш плагин, и жмем на кнопку Configuration.

Галочки должны стоять так, как показано на скриншоте. Если все правильно, закрываем окно нажатием кнопки Close.


Переходим на вкладку Connection.

  • В разделе Advanced выбираем Use system hookdll, Use mirror driver, Remove Aero while connected и Remove wallpaper while connected.

Переходим на вкладку Misc/logging.

  • В поле Service command line вбиваем самую главную строку. Эта строка содержит ID и адрес и данные репитера для подключения. Выглядит она так:



После всех проделанных действий нажимаем ОК для сохранения настроек. Потом запускаете настройки еще раз и переходите на вкладку Service. На ней нажатием соответствующих кнопок сначала останавливаете, потом запускаете сервис.

Генерация уникального ID


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

Установка и настройка UltraVNC Viewer

Скачиваем необходимые компоненты по ссылкам. Компоненты должны иметь архитектуру (x86 и x64), соответствующую архитектуре компьютера, на который происходит установка Viewer.



Внимательно читаем странное и нажимаем Next >.


Выбираем папку установки и нажимаем Next >.


Выбираем только компонент UltraVNC Viewer и нажимаем Next >.


Оставляем здесь все как есть и просто нажимаем Next >.


Выставляем галочки так, как вам будет удобно и нажимаем Next >.


Отключаем просмотр последних версий снятием галочки и нажимаем кнопку Finish.

Теперь скачиваем файл плагина по ссылке выше и перемещаем его в папку программы. После этого запускаем Viewer.


Устанавливаем все настройки так же, как и на скрине. ID сервера для подключения вводится именно в таком формате, то есть ID:XXXXXXXX. IP и порт репитера вводятся такими, какими были назначены при установке репитера.

Все, можно подключаться и радоваться жизни.

Замечания по использованию

  • Не забывайте при подключении устанавливать security плагин. Если его не будет, соединение все равно произойдет, только без шифрования. Заставить UltraVNC Server требовать шифрования мне пока не удалось.
  • Донастройте сервис при установке UltraVNC сервера. В процессе использования было отмечено, что сервис сервера иногда падает. Для того, чтобы в нужный момент не потерять связь с машиной рекомендуется в настройках сервиса установить его автоматический перезапуск при падениях.

Увидимся в следующих сериях

Да, UltraVNC, это вам не это. В смысле, по функциональности проще, имеет все отличительные признаки бесплатного ПО, да и вообще, где это видано… Но я считаю, что как инструмент оно вполне имеет право на жизнь, если удовлетворяет требованиям по безопасности и предоставляемому сервису. В дальнейшем хотелось бы прикрутить к нему Single Click, но пока хватает и этого.

Upgrading issue

For each version the vncdrv.sys and vnccom.sys are a pair. Vncdrv.sys is a kernel driver, so can only be unloaded on reboot. After upgrading the driver, vncdrv.sys is still the old version, but vnccom.sys is already the new one. Switching of vncdrv.sys is done on reboot. Don't use the driver before you reboot.

Подключение к удаленному компьютеру по VNC

1. Установка VNC-клиента
2. Подключение VNC-клиента к удаленному компьютеру
3. Отключение VNC-клиента от удаленного компьютера
4. Тюнинг VNC-клиента
5. Частые проблемы

Для работы с удаленным компьютером по VNC на компьютере пользователя нужно запустить программу-клиент (VNC viewer, VNC client). Эта программа передает на удаленный компьютер данные о нажатиях на клавиши и о движениях мыши, сделанных пользователем, и показывает информацию, предназначенную к выводу на экран.

1. Установка VNC-клиента

Для ОС Windows можно бесплатно скачать и инсталлировать VNC-клиент UltraVNC и TightVNC.

Mac OS X начиная с версии 10.5 имеет поддержку VNC-клиента в RemoteDesktop. Для предыдущих версий можно использовать VNC-клиенты JollysFastVNC и Chicken.

Для Linux ветви Debian (Ubuntu) VNC-клиент устанавливается из репозитория командой:

apt-get install vncviewer

Для ветви RedHat (CentOS, Fedora) — командой:

yum install vnc

Для FreeBSD VNC-клиент (TightVNC) устанавливается из пакетов командой:

pkg_add -r tightvnc

2. Подключение VNC-клиента к удаленному компьютеру

Для подключения VNC-клиента к удаленному компьютеру требуется указать его IP-адрес или DNS-имя, и номер дисплея (по умолчанию, :0) или номер TCP-порта (по умолчанию, 5900). Если VNC-сервер требует авторизации, то при подключении к нему VNC-клиент запросит пароль. Обратите внимание, что пароль доступа к VNC-серверу не связан с каким-либо аккаунтом (учетной записью пользователя) на удаленном компьютере, а служит только для ограничения доступа к дисплею VNC-сервера.

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

Так как на компьютере одновременно могут работать несколько VNC-серверов, для их разделения используют параметр номер дисплея. Например, один VNC-сервер может быть запущен на дисплее :0, другой — на дисплее :1. Каждому номеру дисплея соответствует номер TCP-порта, на котором VNC-сервер принимает соединения. Номер порта для дисплея получается прибавлением номера дисплея к базовому номеру порта — 5900. Дисплею :0 соответствует TCP-порт 5900, дисплею :1 — порт 5901.

3. Отключение VNC-клиента от удаленного компьютера

При закрытии окна VNC-клиента или после выхода из окружения средствами рабочего стола, в зависимости от настроек VNC-сервера, рабочая сессия пользователя может закрыться с остановкой всех используемых программ, или продолжать работу и быть доступной снова при повторном подключении к VNC-серверу.

4. Тюнинг VNC-клиента

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

Главный параметр, который влияет на объем передаваемых данных — алгоритм кодирования передаваемой графики. Для уменьшения объема и, соответственно, ускорения работы, рекомендуется использовать алгоритмы Tight, ZLib, ZRLE — по сравнению с несжатыми данными (Raw), они обеспечивают сжатие в десятки раз, заметно нагружая процессор. Эти алгоритмы кодирования обеспечивают комфортную работу даже на каналах со скоростью 256-512 Кбит/сек.

Для сокращения объема передаваемой по сети информации также можно устанавливать высокий уровень сжатия (Compression Level, Compression Value), низкий уровень качества JPEG (JPEG Quality) и включать режим уменьшения количества цветов (-bgr233, Restricted colors). Самый большой эффект из них при заметном снижении качества изображения дает режим уменьшения количества цветов — объем передаваемой информации уменьшается в 1.5-3 раза, соответственно, в 1.5-3 раза ускоряется отображение на экране.

JPEG применяется алгоритмом кодирования Tight для сжатия участков экрана, содержащих фотографии и другие сложные изображения с большим числом цветов. Использование Tight+JPEG сокращает в 2-5 раз объем передаваемых при этом данных. Другие алгоритмы кодирования JPEG не поддерживают.



1. Выпадающего меню «Система -> Параметры»

Объем передаваемых данных и скорость отображения на канале 1 Мбит/сек при открытии выпадающего меню «Система -> Параметры» (на рисунке меню выделено зеленым пунктиром):

Полноцветный режим 256 цветов (BGR233)
Объем Время Объем Время
ZLib 11 Кб 0.09 сек 7 Кб 0.06 сек
HexTile 208 Кб 1.6 сек 118 Кб 0.95 сек
Raw 248 Кб 2 сек 128 Кб 1 сек

5. Частые проблемы
Не удается подключиться к VNC-серверу
  1. есть ли доступ к интернету;
  2. отвечает ли виртуальный сервер на пинги;
  3. запущен ли на виртуальном сервере VNC-сервер;
  4. нет ли по пути файервола, закрывающего доступ к TCP-порту VNC-сервера;
  5. правльно ли указан номер дисплея или TCP-порт VNC-сервера (номер порта = 5900 + номер дисплея).
Медленная работа через достаточно быстрый канал

Однако, для некоторых сочетаний клиента и сервера такое решение может быть бесполезным из-за ошибок в согласовании алгоритма кодирования. Например, клиент TightVNC с сервером RealVNC часто могут работать только с кодировкой Raw. Решением в этом случае будет смена VNC-клиента или VNC-сервера.

Download

How does it Work?

The Mirror Video Driver is a driver that UltraVNC (for instance) can use to be quickly and efficiently notified with screen changes. Using it on an UltraVNC server results in a excellent accuracy. The video driver also makes a direct link between the video driver frammebuffer memory and UltraWinVNC server. Using the framebuffer directly eliminates the use of the CPU for intensive screen blitting, resulting in a big speed boost and very low CPU load.

Installation

Setupdrv.exe install
UNINSTALL
Setupdrv.exe uninstall
You can also use the control panal and add new hardware, select video and point to the .inf file.

Mv2.sys= miniport driver
Mv2.dll = display dll, the actual mirror driver stuff
Mv2.inf = installation file
Mv2.cat = catalog for signing driver

Supported OS for mv2 mirror driver?

win 2000
win 2003
win 2008
XP
Vista
Win 7

Информационно-коммуникационные технологии в образовании

UVNC MD SDK

VIDEODRIVER Class

VIDEODRIVER();
Initialize MD driver Class

Usage:
VIDEODRIVER *mydriver= new VIDEODRIVER;
Don’t forget to delete
delete mydriver;

void VIDEODRIVER_start(int x,int y,int w,int h,int depth);
Attach the mirror driver
position left top corner
x=left
y=top
w=screen width
h=screen height
depth= 8/16/32 , special case 0=use current depth

1)Mirror current desktop with same size and depth
HDC hDisplayDC = CreateDC("DISPLAY",NULL,NULL,NULL);
int cxWidth= GetDeviceCaps(hDisplayDC,HORZRES) ;
int cyHeight = GetDeviceCaps(hDisplayDC,VERTRES);
mydriver->VIDEODRIVER_start(0,0,cxWidth,cyHeight,0);

2)Mirror current desktop with same size and depth=32
HDC hDisplayDC = CreateDC("DISPLAY",NULL,NULL,NULL);
int cxWidth= GetDeviceCaps(hDisplayDC,HORZRES) ;
int cyHeight = GetDeviceCaps(hDisplayDC,VERTRES);
mydriver->VIDEODRIVER_start(0,0,cxWidth,cyHeight,32);

If you mirror a part of the desktop, moving a window
in your clipped region is not proper updated.
Sample:
mydriver->VIDEODRIVER_start(10,10,320,320,32);

void VIDEODRIVER_Stop();

Detach the mirror driver

BOOL HardwareCursor();
Mirror driver show cursor as blit
Usage:
mydriver->HardwareCursor();
see screentoavi_MD sample

BOOL NoHardwareCursor();
Mirror driver eliminate cursor as part of the blits
Usage:
mydriver->NoHardwareCursor();

char *myframebuffer;
This is a memory buffer that contain your screen in the format you specified
32 RGBARGBARGBARGBA
Instead of using bitblit you can now use memcpy to get access to the screen data.
Usage:
see screentoavi_MD sample

PCHANGES_BUF mypchangebuf;
This is a ringbuffer that contain the changed parts.
format:

typedef struct _CHANGES_RECORD
ULONG type; //screen_to_screen, blit, newcache,oldcache
RECT rect;
POINT point;
>CHANGES_RECORD;

typedef CHANGES_RECORD *PCHANGES_RECORD;

typedef struct _CHANGES_BUF
ULONG counter;
CHANGES_RECORD pointrect[MAXCHANGES_BUF];
>CHANGES_BUF;
typedef CHANGES_BUF *PCHANGES_BUF;

The driver record the rect changes, the application need to remember the old position
to extract the needed updates
Usage:
See changed_screen_parts sample

Samples

screenrecorder using bitblt
same screenrecorder with mirror driver
Get rectangle list of changed screen parts
The small samples help you to implement a mirror driver in your own application

Читайте также: