Вопрос или проблема
Какие есть варианты для встраивания (неинтерактивных) RDP-сессий в приложение? Существуют ли лучшие библиотеки, уже созданные для этой задачи?
Я рассмотрел возможность прямой трансляции на приложение мониторинга, но поскольку программное обеспечение, которое я создаю, будет иметь административный доступ ко всем компьютерам в сети, я подумал, что можно просто подключиться через RDP. Мне стоит остаться на прямой трансляции или использовать RDP?
Когда вы говорите «неинтерактивный», значит ли это, что на удаленных машинах не будет пользователей за терминалами? Или вы имеете в виду, что пользователи будут выполнять программы, но ваша RDP-сессия будет пассивно копировать все, что они делают, в ваше приложение?
Если это так, то я не думаю, что Протокол удаленного рабочего стола позволяет такую «пассивную мониторинг» активной локальной сессии. Но я не эксперт по RDP, так что могу ошибаться.
Если вы имеете в виду, что хотите встроить полноценные RDP-сессии в ваше приложение, но не будете с ними взаимодействовать, вы можете попробовать создать такую реализацию, но это будет непросто. Начальной точкой может стать использование кода существующего клиента RDP, такого как rdesktop или FreeRDP.
Одна из проблем в этом заключается в возможных сложностях создания собственной реализации на основе кода другого приложения: вы, скорее всего, снова изобретете множество колес.
Еще одной возможной проблемой является юридическая сторона этого вопроса. Согласно Википедии, «Microsoft требует от сторонних разработчиков лицензировать соответствующие патенты RDP», и я не уверен, как это относится к вашему случаю.
С другой стороны, если все, что вам нужно, это захват видео с удаленных машин и отображение этого видео (или его сохранение) на вашем компьютере, вероятно, будет проще остаться на прямой трансляции. Имейте в виду, что прямая видео-трансляция является подмножеством RDP, так что вы будете иметь дело с меньшим набором требований и сложностей.
Если вы хотите попробовать это, компания, в которой я работаю, предлагает мультимедийный SDK, который включает, среди прочего, фильтр захвата экрана и управление захватом видео. Эти 2 объекта (фильтр и управление) можно использовать вместе на удаленных машинах следующим образом:
- Фильтр захвата экрана настраивается на захват требуемой области (части или всего экрана)
- Управление захватом видео транслирует видео по сети, позволяя вам получать его в вашем приложении мониторинга.
SDK также включает компоненты для получения видео с другой стороны и его отображения или сохранения (или и того, и другого).
Вы можете попробовать SDK, используя бесплатную оценку LEADTOOLS Multimedia на этой странице. В SDK есть демонстрации на C++, показывающие, как реализовать обе стороны:
- Удаленная машина: LEADTOOLS\Examples\Multimedia\ltmm\Cpp\NetServer
- Мониторинг: LEADTOOLS 20\Examples\Multimedia\ltmm\Cpp\NetClient
Также доступна бесплатная техническая поддержка по электронной почте и в чате во время оценки.
Ответ или решение
Опции Библиотек для Мониторинга Экрана на C++
При разработке приложений, имеющих административный доступ ко всем компьютерам в сети, важным вопросом становится возможность мониторинга экрана удаленных машин. Рассмотрим, какие существуют библиотеки и подходы для достижения этой цели с помощью протокола RDP (Remote Desktop Protocol), а также альтернативные решения, такие как потоковое видео.
Вопросы по Эмбеддингу RDP
-
Неинтерактивность RDP: Ваше упоминание о "неинтерактивных" сеансах подразумевает, что вопросы, возможно, заключаются в пассивном мониторинге активности пользователей на удаленных машинах. Тем не менее, стоит отметить, что стандартный RDP не подразумевает "пассивного" просмотра текущих сеансов. RDP с предназначен для активной работы, и возможности мониторинга ограничены.
-
Использование существующих клиентов RDP: Если вы хотите создать собственное приложение для отображения RDP-сессий, стоит рассмотреть возможность использования уже существующих клиентов, таких как FreeRDP или rdesktop. Однако, это может быть сложной задачей, поскольку потребуется разбираться с исходным кодом, который может оказаться слишком сложным для изменения под ваши нужды.
-
Лицензирование: Важно учесть, что Microsoft требует от сторонних компаний лицензии на соответствующие патенты RDP. Это может ограничить ваши возможности в разработке собственной реализации или модификации существующих решений.
Альтернативные Решения: Потоковое Видео
Если ваша главная цель – это видеозахват с удаленных машин, рекомендуется использовать технологии потокового видео. Это может значительно упростить вашу задачу и уменьшить сложности с лицензированием.
-
Использование LEADTOOLS: Рассмотрите возможность использования LEADTOOLS Multimedia SDK, который предоставляет возможности для захвата экрана и видеопотока. SDK имеет компоненты для:
- Захвата определенной области экрана.
- Потоковой передачи захваченных данных через сеть.
Для этого вам потребуется:
- Настроить фильтр для захвата экрана на удаленном компьютере.
- Использовать управление видеопотоком для передачи данных в ваше приложение мониторинга.
-
Демо-примеры: Включенные в SDK примеры на C++ покажут, как реализовать обе стороны:
- На удаленной машине:
LEADTOOLS\Examples\Multimedia\ltmm\Cpp\NetServer
- На стороне мониторинга:
LEADTOOLS 20\Examples\Multimedia\ltmm\Cpp\NetClient
- На удаленной машине:
-
Поддержка: Воспользуйтесь возможностью бесплатной технической поддержки в процессе оценки, чтобы решить возникающие проблемы в вашей реализации.
Заключение
В зависимости от ваших требований (мониторинг активных сессий RDP или видеозахват) выбор между использованием RDP и потоковым видео может оказать значительное влияние на вашу разработку. Если ваша цель – это мониторинг, который не нарушает лицензирования и обеспечивает простоту интеграции, наилучшим решением может стать потоковая передача данных с использованием LEADTOOLS или аналогичных библиотек.
Таким образом, изучайте доступные библиотеки и подходы, чтобы выбрать наиболее подходящее решение для вашей задачи мониторинга.