У нас есть веб-сайт Интранет и исполняемый файл окон WPF, установленный на каждой рабочей станции.
У нас есть полные администраторские возможности на каждой рабочей станции, и каждый пользователь только использует Internet Explorer. Мы также знаем корректный локальный путь для exe.
Обновление: Мы попробовали этот тег привязки, но когда мы нажимаем на него, мы не получаем ответа:
<a href="c:\Flipper\Splash.Flipper.exe">Click Here</a>
Мы также попробовали это через Google Chrome, и мы получаем то же (отсутствие) ответ. Нажатие на ссылку не заставляет ничего происходить.
Если ваши пользователи действительно используют только IE, вы можете использовать этот фрагмент:
<script type="text/javascript">
function runNotepad() {
var Shell = new ActiveXObject("WScript.Shell");
Shell.Run("%WINDIR%\\notepad.exe");
}
</script>
<a href="#" onclick="runNotepad(); return false;">Run Notepad</a>
Однако при любых разумных настройках безопасности это приводит к очень большому количеству предупреждений (и это правильно!).
Если вы знаете путь к файлу и он одинаков на каждой машине, вы можете сделать ссылку на локальный путь:
<a href="C:\Windows\prog.exe">Click Here</a>
Мы делали это в предыдущей компании в нашей интрасети. Работало, никаких проблем.
У меня есть ссылки на UNC-папки/файлы внутри моего интранет-портала, и я обнаружил, что клиентам необходимо добавить локальное доменное имя "mycompany.local" в их "Доверенные сайты". Я также обнаружил, что это работает только в IE (проверено, что не работает в FireFox и Safari).
Используйте префикс file: ///.
Примерно так:
<a href="file:///C:/Windows/notepad.exe">asd</a>
Я не уверен, что вы сможете пройти через диалоговое окно безопасности (открыть, сохранить, отменить).