Запуск исполняемого файла с веб-сайта? - PullRequest
4 голосов
/ 22 января 2009

Мы разрабатываем сайт, который будет работать только в интрасети, и на компьютерах, имеющих доступ к этой интрасети, будет установлен этот исполняемый файл. У нас не может быть "Хотите открыть [имя файла] .exe?" подсказки. Нажмите на ссылку, и программа начнет работать.

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

Машины будут иметь Windows (XP или выше) с Firefox 3.

Ответы [ 10 ]

11 голосов
/ 22 января 2009

Мы разрабатываем сайт, который будет работать только в интрасети, и на компьютерах, имеющих доступ к этой интрасети, будет установлен этот исполняемый файл.

Значит ли это, что EXE уже установлен на рабочем столе? Вы просто хотите запустить его с сайта?

Если это так, вы можете связать EXE-файл с MIME-типом контента , и когда пользователь щелкнет по нему, он запустится.

Укажите тип содержимого и расширение файла для вашего имени EXE, например:

CauseChaos.exe
Associated with .chaos file extenstion
Content Type will be: application/chaos

Свяжите расширение файла с вашим EXE через установку EXE. Я показываю это здесь, используя InnoSetup

[Registry]
Root: HKCR; Subkey: .chaos; ValueType: string; ValueData: CauseChaos; Flags: uninsdeletekey
Root: HKCR; Subkey: CauseChaos; ValueType: string; ValueData: CauseChaos Tool; Flags: uninsdeletekey 
Root: HKCR; Subkey: CauseChaos\DefaultIcon; ValueType: string; ValueData: {app}\CauseChaos.exe,0; Flags: uninsdeletekey
Root: HKCR; Subkey: CauseChaos\shell\open\command; ValueType: string; ValueData: "{app}\CauseChaos.exe ""%1"""; Flags: uninsdeletekey

Свяжите тип содержимого MIME с расширением файла через установку EXE.

[Registry] (continued...)
Root: HKCR; Subkey: HKCR\Mime\Database\Content Type\application/chaos; ValueType: string; ValueName: Extension; ValueData: .chaos; Flags: uninsdeletevalue
2 голосов
/ 23 января 2009

Там было сделано это. MIME-типы (принятый ответ в момент, когда я добавляю это) требует большой настройки на клиенте и сервере. Это довольно трудоемкая работа, и в итоге вы получаете временные файлы и т. Д.

Нашим решением было добавить наш собственный «Обработчик пользовательских URL-протоколов». В основном, добавьте тип URL-адреса x-our-intranet и сделайте ваше корпоративное приложение обработчиком URL-адреса. Теперь любая ссылка запустит ваше корпоративное приложение, передавая "x-our-intrenet: foo" в качестве аргумента командной строки. Все, что требуется, - это запись реестра на стороне клиента, аналогичная типам MIME.

1 голос
/ 22 января 2009

Попробуйте этот JavaScript:

function executeCommands(inputparms)
{
// Instantiate the Shell object and invoke its execute method.

var oShell = new ActiveXObject("Shell.Application");

var commandtoRun = "c:\windows\Notepad.exe";

// Invoke the execute method. 
oShell.ShellExecute(commandtoRun, commandParms, "", "open", "1"); 
}

Вам придется соответствующим образом настроить параметры безопасности браузера, и это будет работать только в IE.

0 голосов
/ 27 марта 2009

Я полностью понимаю, что вы хотите. Все, что я читаю в Интернете, это люди, которые упоминают, что это серьезное нарушение безопасности и т. Д. Однако я не думаю, что они понимают, почему вы хотели бы, чтобы это было реализовано, и я объясню, зачем мне это нужно, и работаю над решением этой проблемы и Я очень близко.

У меня много разных пользовательских приложений, напр. Колл-центр и т.д ... В настоящее время я работаю над заблокированным рабочим столом, который работает в режиме киоска. Все, что увидит пользователь, это синий экран с некоторой информацией о компьютере и значком IE. Моя цель - запустить Microsoft Office и некоторые внутренние клиент-серверные приложения с этой страницы. Он отлично работает, поскольку все еще там, просто мои пользователи не могут его видеть. Однако у меня такие же проблемы, как и у вас. Моя сеть очень безопасна с использованием MPLS, внутренних и внешних управляемых маршрутизаторов, межсетевых экранов / ASA и множества специалистов по безопасности. Плюс, это строго ВНУТРЕННИЙ. Так что, на мой взгляд, все в порядке. Поэтому, если я придумаю какое-то обходное решение для этого, я опубликую его.

0 голосов
/ 22 января 2009

Использование URL-адреса «file: /// c: / Program Files / myprogs / myprog.exe» в ссылке, используемой для работы с IE. Но я давно не пробовал.

Я бы рекомендовал метод MIME-типа, описанный выше, или добавив специальный префикс URI "chaos: // myparams", который обрабатывается этим исполняемым файлом.

0 голосов
/ 22 января 2009

Это старая статья о веб-развертывании исполняемых файлов. Я знаю, что это возможно с помощью Internet Explorer (из-за нашей раздробленной команды разработчиков мы все еще должны поддерживать часть этого). Я не знаю о последствиях Firefox.

0 голосов
/ 22 января 2009

Активный X-контроль - самый простой способ. Есть плагин для Firefox, который позволяет вам размещать активные элементы управления X. Или вы можете просто написать плагин NS, чтобы справиться с этим.

0 голосов
/ 22 января 2009

Я согласен с остальными, я почти уверен, что вы больше не сможете этого делать (особенно в Firefox). Это то, сколько программ-шпионов / рекламного ПО было установлено в тот же день. Вам придется встать и сказать руководству, что это невозможно.

0 голосов
/ 22 января 2009

Я рекомендую вам взглянуть на Adobe Flex / Air , он спроектирован с учетом этой модели и внутренней двери сарая, которую он открывает.

0 голосов
/ 22 января 2009

Единственный способ, которым я мог бы представить эту работу, - это какой-то элемент управления ActiveX, который запускал бы ваш исполняемый файл, но я не знаю, насколько это возможно с Firefox.

Это должно быть одной из тех вещей, когда вы должны отказываться от этого, а не от руководства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...