2015-06-23 3 views
1

Мне нужно запустить установленное приложение из браузера (не только IE).Запустить exe из браузера (Windows)

От this thread Я понял, что мне нужно реализовать asynchronous pluggable protocols и registering an application to uri scheme.

Я хотел бы проверить, есть ли другие способы его реализации?

В моем сценарии ожидается запуск существующего приложения с клиентской машины. Поэтому я могу зарегистрировать это приложение на схеме uri и использовать его.

Моя единственная проблема заключается в обоих сценариях (или, по крайней мере, во втором случае), мы должны внести изменения в реестр. И если параметров реестра нет, это не сработает.

Есть ли другой способ, который не зависит от настроек реестра или каких-либо предварительных условий.

Спасибо.

ответ

6

Невозможно вызвать исполняемый файл за пределами браузера без типов описанных вами типов (и я, вероятно, использовал бы схему URI приложения на вашем месте, потому что это минимальный пользовательский плагин с вашей стороны). Это связано с тем, что если вы можете вызвать любое приложение без пользователя, требующего редактирования реестра или некоторых связанных с ним изменений, вы можете делать все, что захотите, с помощью любого приложения, которое, как вы знаете, будет на машине пользователя. Это называется песочница, и у HOWTO GEEK есть достойная статья.

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

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

Как они отмечают, вы уже находитесь в песочнице, когда находитесь в браузере. Если вы хотите, чтобы написать приложение, которое можно получить доступ изнутри там, вы должны работать в пределах возможностей и ограничений HTML, JavaScript и т.д.

от вашего собственных MSDN link вы можете увидеть, что на Windows,

Без этого ключа приложение обработчика не запускается.

Ваше сообщение, похоже, указывает, что Windows действительно ваша соответствующая целевая ОС.Если вы хотите сделать это на другую операционную систему (или если кто-то читает этот вопрос), методы будут варьироваться в зависимости от того, что вы уже нашли (это уже Stack Overflow вопросы):

в теории, вы могли создавать плагин или приложение конфигурации, специфичные для каждого вероятного браузера, чтобы сделать что-то совершенно обычай. Однако вы будете изобретать колесо, потому что для установки вашего приложения/плагина вам потребуется такое же повышение прав. Кроме того, вы будете изобретать протокол, упомянутый выше, и каким-то образом распространять приложение для установки раньше времени.

Кроме того, иногда кажется, что приложения плавно получают доступ к просмотру браузера пользователя, когда используются новые веб-функции, такие как доступ к веб-камерам и геолокация. То, что мы на самом деле видим здесь, - это несколько новых API-интерфейсов JavaScript вместо апплетов Flash и других вещей, которые мы использовали для использования через стороннее программное обеспечение.

  • getUserMedia (или это может быть webkitGetUserMedia или mozGetUserMedia в зависимости от браузера) позволяет использовать средства массовой информации от веб-камеры и микрофона. Браузеры внедрили приглашение на разрешение, прежде чем разрешить это, но приложение по-прежнему является приложением для JavaScript.
  • API геолокации написан в стандарте HTML5 here, а простейшая реализация (JavaScript) будет выглядеть так: navigator.geolocation.getCurrentPosition(show_map); Это все еще просто библиотека JavaScript. Если вы его используете, this site упоминает добавление некоторых ошибок обработки/резервного копирования и т. Д. Он доступен начиная с IE 9. См. Эту ссылку для других браузеров.
  • Вы можете использовать navigator.registerProtocolHandler (далее here из документов Mozilla). Однако, помимо встроенных протоколов (например, mailto), вы будете рассматривать обработку URI с помощью веб-приложения в том же домене, где вы Это называется функцией. Чтобы настроить обработчик, в котором обрабатывается протокол burger по ссылке <a href="burger:cheeseburger">this</a>, вы можете написать: navigator.registerProtocolHandler("burger", "http://www.google.co.uk/?uri=%s", "Burger handler");. Вы можете найти более подробную информацию на W3C spec, включая другие белые списки, но вам нужно будет сделать много тщательного выбора браузеров для поддержку и обеспечить, чтобы ваша целевая аудитория могла это использовать. Мне нравится ссылаться на CanIUse всякий раз, когда я хочу определить поддержку браузера. It looks like Chrome and Firefox are in and IE is out.
  • Я только что нашел способ до bolt on some functionality like this in Ubuntu by adding a protocol handler, IF Предположим, что вы можете использовать все клиентские компьютеры для запуска некоторых скриптов (с правами SUDO) перед использованием ссылок. Вот как apt: ссылки в Ubuntu вызывают диспетчер пакетов. Так как это вернулось в область «создать сценарий установки, который может редактировать типы MIME в реестре» для решения Windows, я думаю, что я могу остановиться здесь.
+0

Спасибо за ответы. Когда мы пытаемся использовать камеру или микрофон, браузер просто попросит разрешения, а затем продолжит. И я видел, как некоторые приложения запускают внешнее приложение (в Chrome) с одобрения пользователя. Мне просто интересно, есть ли что-то, чего я не вижу. – Naresh

+0

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

+0

еще раз спасибо. Это просто нужно работать в среде Windows. Я попытался зарегистрировать пользовательский uri и запустить приложение. Я попытался запустить excel, и я в состоянии это сделать. Но я не могу открыть какой-либо лист, поскольку он также рассматривает схему name as path. Какие-либо предложения? – Naresh

2

В Windows указанный протокол для приложения может быть зарегистрирован в реестре. В этом msdn doc показаны Регистрация приложения в схеме URI.

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

HKEY_CLASSES_ROOT 
    alert 
     (Default) = "URL:Alert Protocol" 
     URL Protocol = "" 
     DefaultIcon 
     (Default) = "alert.exe,1" 
     shell 
     open 
      command 
       (Default) = "C:\Program Files\Alert\alert.exe" 

Тогда вы можете написать HTML, чтобы проверить

<head> 
    <title>alter</title> 
</head> 

<body> 
    <a href="alert:" >alert</a> 
<body> 
+0

Ницца, вот REG пример файла 'редактор системного реестра Windows версии 5.00' ' [HKEY_CLASSES_ROOT \ Снип] @ = "URL: Надрез протокол" "URL Протокол" = "" [HKEY_CLASSES_ROOT \ Снип \ DefaultIcon] @ = "SnippingTool.exe, 1" [HKEY_CLASSES_ROOT \ Снип \ оболочки] [HKEY_CLASSES_ROOT \ Снип \ оболочки \ открыть] [HKEY_CLASSES_ROOT \ Снип \ оболочки \ открытая команда \] @ = "C: \\ Windows \ \ system32 \\ SnippingTool.exe " ' для ' Snipping Tool' –