Pull to refresh

Comments 16

Все можно было сделать на порядок проще.
Пример:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\runapp]
"URL Protocol"=""
@="URL:Universal run app"

[HKEY_CURRENT_USER\SOFTWARE\Classes\runapp\shell]

[HKEY_CURRENT_USER\SOFTWARE\Classes\runapp\shell\open]

[HKEY_CURRENT_USER\SOFTWARE\Classes\runapp\shell\open\command]
@="mshta javascript:new(ActiveXObject)('WScript.Shell').Run(decodeURI('%1'.substr(7))),window.close()"

В браузере открываем страницу
runapp:notepad.exe hello.txt
Таким образом можно извенуться и запускать любые комманды.
Естественно при реальном использовании, нужно декодировать и передавать только аргументы для запуска конкретного приложения. Я описал лишь концепт.
А это разве не только в IE работать будет?
В любом браузере на Windows 2000 и выше.
Протестил в хром.
Тогда прикольно, надо тоже протестировать, проверить как он работает с разными параметрами безопасности установленными в IE. Не зря статейку написал — коллективный разум даёт интересные ответы на интересные вопросы.
Спасибо за решение, действительно работает и даже на параметры безопасности в IE не обращает внимания. Я немного модифицировал предлагаемую строку, чтобы запускался sapshcut.exe:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\sapshcut]
@="URL:sapshcut Handler"
"URL Protocol"=""

[HKEY_CURRENT_USER\SOFTWARE\Classes\sapshcut\shell]

[HKEY_CURRENT_USER\SOFTWARE\Classes\sapshcut\shell\open]

[HKEY_CURRENT_USER\SOFTWARE\Classes\sapshcut\shell\open\command]
@="mshta javascript:new(ActiveXObject)('WScript.Shell').Run(decodeURI('%1'.replace(':','.exe'))),window.close()"

Остается ровно один вопрос — стоит ли использовать? Данный вариант требует прописывания на всех компах организации веб-протокола, что не так-то уж элементарно на сотнях тысяч рабочих мест (не сколько технически, сколько организационно). Поэтому для меня вариант с генерацией .sap файла пока выглядит более привлекательно. Хотя этот вариант со скриптом-обёрткой прямо в реестре красив своим лёгким безумием.
В зависимости от браузера и его настроек, пользователю может не быть предложено запустить .sap файл.
+ может появляться некрасивая пустая вкладка перед началом загрузки файла (можно чуть компенсировать добавив атрибут download к ссылкам).
Вариант с реестром имхо более надежный и работает в один клик.
Я проверял в разных браузерах. Специально указал header('Content-type: application/sap');
Браузер просто предлагает открыть файл с зарегистрированным в реестре расширением, пустой вкладки не появляется.
В вашем варианте кстати дыра. Можно запустить
sapshcut: && format c:
Да, надо будет тогда еще все спецсимволы порезать.
Я уже продумывал этот момент. Конкретно в вашем случае не выйдет, ибо из пароля нельзя символы выкидывать, а в пароле могут быть какие угодно символы.
Короче фигню я предложил.
Решение задачи в лоб: запуск sapshcut.exe непосредственно из браузера с помощью объекта ActiveX:

Это не будет работать по той же причине. Неудачный пароль все сломает.
А под Linux надо писать отдельную статью. В нашей организации мы не используем клиент под Linux, поэтому пока ничего сказать не могу.
В свое время для этих целей писал java апплет, а он уже делал все что нужно было.
Sign up to leave a comment.

Articles