Запустить exe в браузере
Это внутреннее веб-приложение, где мы хотели бы, чтобы веб-страницы содержали ссылки на несколько утилит, которые Win32 EXE. Мы доверяем бывшим и производим их. (не волнует, если он спрашивает, нормально ли его запускать или сохранять). Я попробовал прямую ссылку (например, C:notepad.exe), который работает только локально. (Это будет доля в сети). Пробовал файл:// / и не работал. IE7-это необходимый браузер.
Как насчет чего-то вроде:
это предполагает, что exe находится где - то вы знаете на компьютере пользователя:
- он загружает файл js
- в windows: файл js определяет, установлен ли iTunes на компьютере или нет: ищет компонент браузера activeX, если IE, или плагин браузера, если FF
- если iTunes установлен, то браузер перенаправляется на URL-адрес с специальный транспорт: itms://.
- браузер вызывает обработчик (предоставленный iTunes exe). Это включает в себя запуск exe, если он еще не запущен.
- iTunes exe использует остальную часть специального url-адреса для отображения определенной страницы пользователю.
обратите внимание, что exe, при установке, установлены обработчики протокола URL для транспорта "itms" с браузерами.
не простой инженерный проект дублировать, но определенно выполнимо. Если вы идите вперед с этим, пожалуйста, рассмотреть вопрос о создании соответствующего программного обеспечения с открытым исходным кодом.
затем вы можете написать html для тестирования
веб-страница будет содержать ссылки с параметрами, которые приведут к открытию программы registerd и любым параметрам, указанным в ссылке, передаваемой ей. Есть хороший описание как это сделать на MSDN
вы говорите, что у вас возникли проблемы с вставкой на веб-страницу ссылки на файл, который имеет .расширением exe?
альтернативой, конечно, является динамическая запись содержимого файла непосредственно в Ответ.Клиенту OutputStream. Так тебе это не понадобится .exe должен быть в вашем docroot, но это не прямая ссылка для загрузки. В этом случае файл может быть загружен нажатием кнопки.
что-то вроде этого:
Response.Clear(); string FullPathFilename = "\\server\share\CorpApp1.exe"; string archiveName= System.IO.Path.GetFileName(FullPathFilename); Response.ContentType = "application/octet-stream"; Response.AddHeader("content-disposition", "filename postinfo clearfix">
вы также можете использовать в JavaScript.
или вы можете зарегистрировать приложение в обрабатывать новый веб-протокол вы можете определить. Это также может быть " выбор приложения" таким образом, каждый раз, когда приложение нажимается, оно будет ссылаться на страницу вашего нового протокола, вся обработка этого протокола затем передается вашему "приложению выбора", которое использует аргументы для поиска и запуска приложения на ПК клиентов.
Идея запускать приложения не на компьютере пользователя, а на удаленном сервере, и транслировать изображение пользователю по сети – не нова, и давно «витает в воздухе». Согласитесь, идея хорошая: ведь для установки любого нового ПО на свой компьютер необходимо разобраться с политикой лицензирования (кому это актуально), найти дистрибутив (желательно, без вредоносного ПО внутри), установить и настроить ПО — иногда просто руки опускаются. Кроме того, подход с трансляцией ПО снимает необходимость в своем производительном «железе», что становится актуальным в свете ежегодного роста продаж планшетных компьютеров и смартфонов. Да и интернет есть повсюду в мегаполисах: слушать музыку и смотреть кино онлайн, в конце концов, все уже давно привыкли.
Вот только ни одного полнофункциональной разработки, подходящего для применения в сети Интернет до сих пор так и не видно. Мы подумали, что это никуда не годится и решили сделать ее.
Давайте поподробнее
С моей стороны будет, наверное, не совсем честным не упомянуть про вполне себе существующие, и даже неплохо себя зарекомендовавшие Citrix XenApp и Microsoft App-V. Оба продукта неплохо справляются со своей задачей в крупных организациях, но вот беда: оба решения малопригодны для публичного предоставления сервиса (то есть, для сети Интернет). Виной тому технические особенности, ведь эти системы изначально проектировались для интеграции заказчику. Причем речь идет в первую очередь о крупном бизнесе, так как среднему и малому бизнесу такие системы не по карману. Да и клиентское ПО надо ставить на пользовательские устройства, разбираться, настраивать. На практике оказывается, что не для любых устройств есть клиенты (я про планшеты. Смартфоны и вовсе не поддерживаются), несмотря на заверения дистрибьюторов. Стоит ли говорить, что попытки построения публичного сервиса на базе данных продуктов ничем хорошим не заканчивались, насколько мне известно.
А почему бы не сделать систему, способную транслировать Windows-приложения именно для глобальной сети, подумали мы?
Говоря про Windows-приложения, мы имеем в виду любое программное обеспечение, способное функционировать под управлением операционной системы Microsoft Windows. Почему взяли фокус именно на Windows-приложения? Все очень просто: Windows-приложения – это приложения для бизнеса, для работы, для учебы, приложения, которыми пользуются (и, что немаловажно, умеют пользоваться) миллиарды людей по всему миру. Количество приложений уже разработанных под Microsoft Windows, полагаю, исчисляется миллионами, что представляет собой огромный неисчерпаемый функционал, который было бы, на мой взгляд, здорово аккумулировать в одном месте.
В качестве главного критерия системы была выбрана простота понимания для конечного пользователя, чтобы даже моя мама, привыкшая работать с уже установленным и настроенным ПО на своем ноутбуке не самой последней модели, легко разобралась.
Еще одним важным критерием стало желание поддерживать различные типы современных устройств (персональные компьютеры под управлением различных OS, планшеты, мобильные устройства, современные телевизоры, поддерживающие технологию smart TV и другие). Решение напрашивалось само собой: транслировать windows-приложения надо с удаленного сервера в веб-браузеры конечных пользователей, ну или на веб-страницу, если быть более точным. Вот только как это сделать?
Реализация
- сервер доступа web-клиентов – обеспечивает взаимодействие сервера приложений с клиентами;
- сервер приложений – обеспечивает передачу событий клавиатуры и мыши приложениям, отправку изображения клиенту, изоляцию приложений друг от друга;
- сервер управления – обеспечивает управление инфраструктурой;
- файловый сервер – обеспечивает хранения пользовательских данных.
Сервер приложений является ядром и наиболее не простой частью разрабатываемой системы. Передача изображения от запущенного на сервере ПО осуществляется с помощью снятия скрин-шотов и передачей полученных кадров в режиме реального времени. Изображение разбивается на области, и пользователю передаются только изменения для экономии трафика. Изначально планировалось использовать технологию Desktop Duplication API, но так как она может дуплицировать только рабочий стол целиком, а нам нужны окна, то от нее пришлось отказаться. Модуль создания скриншотов в итоге пришлось разрабатывать самостоятельно. Для разработки кодека в качестве «образца для подражания» был принят FreeRDP WebConnect, серверную часть естественно писали сами. Для передачи событий клавиатуры и мыши приложениям имитируются события на стороне сервера с использованием функций send input.
Файловый сервер и сервер управления представляют меньше интереса, по этой причине не будем на них заострять внимание.
На данный момент бета-версия выглядит так:
И немного импрессионизма в Gimp от автора статьи
LattyF
Не стоит забывать, что Fiorefox - это не менеджер файлов, а просто интернет проводник. К сведению тех, кто не знаком с программированием, что бы реализовать запуск файлов из лисы нужно написать дополнительный модуль, который это бы реализовывал, затем ещё и побеспокоиться о его кроссплатформенности (в линуксе под иксами скрипт на шеле просто не запустится), и т.д.
А нужен ли такой комбайн? И многим ли он интересен? Если кому надо, то почему бы самому не написать расширение?
Во вторых все почему то забыли, что файерфоксом пользуются ещё и в корпоративном секторе, а там под видом локальных дисков могут быть и сетевые, и там то такого маразма админам совсем не нужно (ну если он совсем не конченный идиот, который захотел, что бы пользователи из браузера могли запускать всё, что им заблагорасудится).
И последнее - зпрет на запуск файлов - это, ИМХО, не только причуда мозиллы, это требование к интернет технологиям вообще.
Этот мир, не совершенный, состоит из всех из нас. Он прямое отражение наших чувств и наших глаз.
Этот мир не станет лучше и не станет он добрее, если сами мы добрее не станем.
(@ Игорь Тальков, Этот мир).
ladserg, в том то и дело, что он не запрещает запускать, а просто тупо пытается скачать файл, хотя он и так на локальном диске (даже если тот примонтирован — для прикладных программ проходит все прозрачно). И это однозначно опознается пользователями как глюк. Если что-то запрещено, то так и должно говориться:
«Запуск выполняемых файлов запрещен, поскольку такое действие потенциально небезопасно» и т. д. Для того чтобы сделать такое не надо даже плагина писать. Нужно лишь проверить, что файл выполняемый.
Фокс же в любом случае просто тупо пытается скачать файл с винта. На что создатели оболочек для журналов (например) явно не рассчитывают. А вы хотите популярности. Оперу ругаете.
Black holes were created when the God divided by zero.
На что создатели оболочек для журналов (например) явно не рассчитывают
А они вроде только на Осла и рассчитывают Как и многие веб-дизайнеры.
ladserg, в том то и дело, что он не запрещает запускать, а просто тупо пытается скачать файл, хотя он и так на локальном диске (даже если тот примонтирован — для прикладных программ проходит все прозрачно).
Для браузера что локально, что в сети, всё URL ресурсы, и он просто должен качать эти URL и всё, а движок должен обрабатывать - картинки рисовать, текст отображать, и т.д. Неизвестные файлы же просто копировать. Вообще то все браузеры так и делали всегда, просто дорогая MicroSoft пошла по пути облегчения жизни вирусо-писателям и реализовала запуск *.exe файлов из инета (это ещё когда осёл не был встроенным менеджером файлов в винде), ну ту же дурость и стали пренимать некоторые "конкуренты"
И это однозначно опознается пользователями как глюк.
Ну это смотря на какого пользователя ориентироваться, у большинства пользователей винды стоят антивирусы, которые проверяют копируемые файлы на вирусы, и практика с копированием файлов повышают защиту их компьютера, признаться я сам таким образом отловил немало вирусов как с локально подключенных ресурсов так и с дисков весьма авторитетных журналов.
И опять же пользователи есть разные, напимер те, кого я встречал, скопируют с диска по папкам, а потом разбирают или ставят скопированный файлы.
Если что-то запрещено, то так и должно говориться:
«Запуск выполняемых файлов запрещен, поскольку такое действие потенциально небезопасно» и т. д. Для того чтобы сделать такое не надо даже плагина писать. Нужно лишь проверить, что файл выполняемый.
Ну какой запрет, какой исполняемый файл в линуксе, макинтоше? А в Windows 3.11 (да есть и такие)? А графика, анимация, скрипты, архивы? Для браузера это просто ресурсы, а под линуксом вообще простой текстовый файл может быть исполняемым. Причём запускаемый файл может вообще не иметь расширения. Всё проверять?
Да и на кой это окно для тех, кто просто копирует эти файлы?
Фокс же в любом случае просто тупо пытается скачать файл с винта.
И не только фокс, ещё и links, lynx и ряд других, более взрослых браузеров. И как я уже объяснил, для URL ресурсов не значения - локальный или не локальный это ресурс.
На что создатели оболочек для журналов (например) явно не рассчитывают.
Ну, тут уже писали про дружбу этих создателей с ослами, правда встречал и такие диски, где светилась большая лайба, мол нельзя запускать файлы из браузера, сначала копируйте файл на диск, проверьте на вирус и там уже выполняйте.
А другие создатели просто создают свою оболочку, откуда пользователь может как и запускать эти файлы, так и копировать на диск.
А вы хотите популярности. Оперу ругаете.
Не знаю на счёт оперы, я уже более двух лет её просто в глаза не видел, но если фокс всякую фигню будет исполнять, то мне придётся запретить его у себя на предприятии (на более чем двух стах компах), мне дешевле какой нибудь lynx поставить, чем отгребать потом проблем).
Кстати, в осле эту фишку уже отключили, обещали вообще убрать такую возможность.
Думаю дешевле придерживаться той практики, которая была принята ещё до осла, той условности, которой придерживаются другие браузеры. Зато если чётко знать, что в браузере только качать, в менеджере файлов выполнять, то можно добиться хоть какого то порядка. Да, безобразно, но зато единообразно, ну и спокойнее.
Этот мир, не совершенный, состоит из всех из нас. Он прямое отражение наших чувств и наших глаз.
Этот мир не станет лучше и не станет он добрее, если сами мы добрее не станем.
(@ Игорь Тальков, Этот мир).
Достаточно проверить его «исполняемость» Других способов запустить файл «просто так» я не знаю.
для URL ресурсов не значения
Да, безобразно, но зато единообразно, ну и спокойнее.
Что есть, то есть. Хотя достаточно просто посмотреть на реацию «чайника», который «жму, а оно не запускается». Вот ему очень долго придеться объяснять, что хорошо, а что плохо.
Кстати, ставить xpi с сайтов тоже потенциально опасно. И ведь есть окошко, если пытаешься ставить с недоверенных сайтов. А ведь намного проще было просто запретить ставить. Разве не так? Чем xpi отличается от исполнимых файлов? С точки зрения безопасности вообще ничем. Тот же вирус. А с локальных дисков они вообще ставяться сразу, без всяких окон. Mozilla свои расширения не подписывает, всегда красная надпись. О чем тут можно рассуждать?
xpi ставить получается можно, потому что это «своё», а вот sh запустить нельзя, потому что лень написать обработчик…
Black holes were created when the God divided by zero.
LattyF
Я уже писал выше, дело не только в запретах на выполнение, дело ещё и в обработчиках файлов, например у картинок один обработчик, у PDF другой (как правило отдельное ПО), для запуска файлов на выполнение нужно писать отдельный модуль-обработчик, который создавал бы процесс, передавал бы ему окружение среды, хандлеры окна и т.д. А затем инициировать запуск программы. Это только для MZ и PE файлов, а для ELF и a.out файлов, да ещё в иксах несколько иначе, там ещё и терминальный процесс надо создавать. Есть и ещё одно НО, не мало сайтов базируются на CGI сделанных при помощи тех же exe файлов написанных на C, C++, Basic, Pascal. И как же должен будет реагировать в случае выполнения вот такого URL:
Он что, страницу должен выполнять? Т.е. браузер должен создать процесс, передать ему системное окружение, хандлеры окна, загрузить в память файл index.exe (напоминаю, что в нашем случае это CGI программа, которая возвращает HTML код), ну и запустить программу на выполнение. И что мы получим?
Как обрабатываются файлы браузерами сейчас:
1. Если веб сервер передал браузеру тип файла, то смотрится список mime/type отношений, если браузер сам поддерживает этот mime/type (такие как plain/text, plain/html, image/gif, etc), то он сам его обрабатывает, картинку показывает, текст отображает, хтмл преобразует, форматирует, размечает, и собственно, тоже отображает.
2. Если веб сервер не передал тип файла, то смотрится локальный список соответствий расширений mime типам, затем смотрится соответствие программ и если браузер поддерживает этот тип, то он его обрабатывает.
3. Если браузер не умеет обрабатывать указанный тип файла, то он смотрит какая программа обрабатывает этот тип (в винде он просто у системы спрашивает, в линуксе он может спросит как у графической среды, например KDE, или может иметь свой список соответствий) и просто скармливает ей.
4. Ну и если у типа файла не нашлось ни папы, ни мамы, то он просто тупо предлагает его скачать.
О чём это я, ах да, откройте вот эту ссылку в соседнем окне, красивая такая собачка да? Представьте себе если браузер вместо показа этой картинки будет всегда предлагать выполнить, или выполнять?
Поверьте мне, как нелюбителю собачек, лучше и спокойнее когда файл выполняется руками, бог его знает что и как запустит браузер, или чего он откажется отображать как текст (если экзешник - CGI).
Что по поводу глюков и чайников, тот чайник, которого описали вы, видимо очень любит думать, иначе он бы вообще не додумался что файл должен выполняться браузером а не системой. Такому чайнику, ИМХО, нужен кипятильник.
Нормальная реакция, как минимум наших пользователей (а те такие чайники, что даже кипятильники тут бесполезны), не запускается в браузере - видимо и не должно, запустит в проводнике.
А то так и редактор edit заставят файлы по ссылке выполнять, или просмотрщик less(more).
По поводу изменения обработчика file://:
Надеюсь теперь вы понимаете почему нет смысла менять обработчик протокола передачи данных file://?
И последнее, вернее два последних:
1. запуск файлов в лисе не запрещён, он просто не реализован (вернее нет обработчика этих типов).
2. сюда зайдите, а если это вам выполняться полезет?
Этот мир, не совершенный, состоит из всех из нас. Он прямое отражение наших чувств и наших глаз.
Этот мир не станет лучше и не станет он добрее, если сами мы добрее не станем.
(@ Игорь Тальков, Этот мир).
Безусловно, все сталкивались с проблемой скорости работы компьютера. На этот параметр вашего ПК влияет множество факторов, включающих переполненный трей и забитый иконками рабочий стол. Слишком много программ, установленных на вашем компьютере, безусловно, замедляют его используя и без того не резиновые ресурсы.
По этой причине, так называемые, санитарные программы уведомляют вас о приложениях, которые используются крайне редко. Они предлагают удалить эти приложения либо приостановить, при условии работы их в фоновом режиме. Конечно, это в какой-то мере сэкономит потребляемую оперативную память компьютера, но есть способ кардинально решить эту проблему.
Spoon — это веб-приложение, которое позволяет пользователям запускать программы в специальной виртуальной среде без фактической установки их на своих компьютерах. Spoon поддерживает относительно не плохой список программ. Вы можете использовать браузеры, игры, медиа приложения, программы для социальных сетей и улучшения производительности.
Вместо загрузки и установки приложения, Spoon позволяет транслировать их онлайн из Интернета и запускать так, как будто они установлены локально. Таким образом, приложение ограниченно только рабочим пространством программы в своей собственной изолированной среде. Вам не приходится иметь дело с множеством проблем, порождаемых установкой, например, регулярным наличием свободного места на жестком диске. Так же вы с легкостью обходите любые ограничения, введенные в системе, в том числе административные, ошибки совместимости и UAC уведомления. Вы также можете запускать ваши приложения прямо на другом компьютере, просто скопировав их на жесткий внешний диск или USB носитель.
Перед использованием среды Spoon, вам придется создать учетную запись. В ней необходимо указать ваше имя, адрес электронной почты и пароль для входа. Далее плагин будет загружен на Ваш компьютер. После его установки, приложение готово к использованию.
Необходимо войти под своей учетной записью чтобы получить доступ к различным приложениям. Отдельно стоит отметить простоту интерфейса. Все программы разбиты на категории, есть множество предоставляемых версий одного и того же приложения. Даже в английском меню интуитивно можно догадаться, как использовать то, что тебе нужно.
Выбрав нужное приложение, вы увидите описание, доступные версии, программы-помощники и другую полезную информацию. После нажатия кнопки «Выполнить» начнется процесс буферизации, после этого приложение автоматически запуститься в среде Spoon.
Плагин работает в системном трее, то есть доступ к полной базе приложений у вас имеется всегда. Для этого вам нужно лишь осуществить пару кликов мышью. Вы так же можете выбрать любую версию необходимой программы. К примеру, если вы выбираете браузер Firefox, то в списке сможете выбрать любую из доступных версий этой программы.
Все время тестирования программа Spoon работала идеально. Но единственным минусом приложения можно назвать возможность использования только на ОС Windows. Но уже ведутся разработки по использованию и в Linux-подобных рабочих средах. Похоже, готовится к выходу достойный конкурент всемирно известной программы «Wine».
Читайте также: