Как я могу заставить программу на клиентском компьютере запускаться со страницы ASP.NET? - PullRequest
7 голосов
/ 24 августа 2011

У меня есть приложение, которое я пытаюсь запустить в интрасети. На моей машине это работало отлично (последние слова известны), но когда я установил его на сервере, это не сработало. Как только я увидел ошибку «система не может найти указанный файл», я понял, что это должно быть связано с попыткой запустить программу на клиентском компьютере.

Да, это будет кошмар безопасности, если какое-либо приложение в браузере сможет запустить исполняемый файл на клиентском компьютере. Это отличается для интранета? Несколько компьютеров, на которых он будет работать, имеют ту же версию IE и .NET, на которой он будет работать, и все они имеют необходимый .exe для запуска.

Вот краткий обзор проекта:

  • Сотрудник и участник входят в комнату с компьютером.
  • Сотрудник открывает мое веб-приложение и ищет идентификатор человека (эта часть работает)
  • Нажатие на «запись» должно выполнить скрытый запуск уже установленной программы, которая начинает запись.
  • По завершении сотрудник нажимает кнопку «Готово» (или время ожидания приложения), и файл сохраняется.
  • Файл загружен на сервер.
  • Сотрудникам не хватает технического опыта, поэтому моя цель состоит в том, чтобы у них был веб-сайт, на котором они могли бы перейти туда, где чуть больше коробки, чтобы получить идентификатор участника и две гигантские кнопки «ЗАПИСЬ» и «СТОП»

Кто-нибудь может мне помочь, как это сделать (или хотя бы дать мне знать, что это невозможно)?

Ответы [ 4 ]

8 голосов
/ 24 августа 2011

Одна идея: Вы можете зарегистрировать Обработчик протокола , чтобы запустить ваше приложение с необходимыми параметрами.

3 голосов
/ 24 августа 2011

Есть несколько способов сделать это. Никто не нарушает безопасность (много).

Вы можете скачать файл с определенным типом файла. Этот тип файла может быть связан с клиентской программой, поэтому после нажатия «ОК» для загрузки файла клиентская программа запустится. Загруженный файл может содержать или не содержать некоторые данные, например идентификатор некоторого объекта.

Альтернативой может быть использование ActiveX, что имеет последствия для безопасности.

1 голос
/ 24 августа 2011

Если вы поместите свой сайт в зону IE Trusted или Intranet, следующий Javascript будет работать нормально. Я использую его для связи нашего поиска в базе данных поддержки ПК с нашим программным обеспечением для удаленного управления экраном:

<script type="text/javascript" language="javascript">
    function runDameWare(strHostname, blControl) {
        var objShell = new ActiveXObject("Wscript.Shell");
        var strCommand = "C:\\Program Files\\Dameware\\dwrcc.exe -c: -h: -m:";
        strCommand += strHostname;
        if (blControl) {
            strCommand += " -v:";
        }
        objShell.Exec(strCommand);
    }
</script>

Насколько я понимаю, выгрузка результатов вашей работы в локальной программе на веб-сервер может быть выполнена с использованием класса HttpWebRequest, как показано в этой статье:

http://forums.asp.net/p/1482778/3464854.aspx


Edit: Вот как я вызываю вышеуказанную функцию. По сути, я просто рендеринг простого элемента <a> с атрибутом onclick. Вероятно, есть более чистый способ сделать это, но он работает:

Markup:

<asp:TemplateField>
    <ItemTemplate>
        <%# RenderDameWareLinks(Eval("ResourceName"))%>
    </ItemTemplate>
</asp:TemplateField>

Код:

Protected Function RenderDameWareLinks(ByVal strHostname As String) As String
    Dim strFullLink As String = String.Empty
    Dim strViewLink As String = String.Empty
    strFullLink = "<a onclick=""runDameWare('" & strHostname & "', false);"">"
    strFullLink &= "<img alt=""Connect using DameWare"" src=""Image/dameware1.gif"" style=""padding: 2px;"" />"
    strFullLink &= "</a><br/>"
    strViewLink = "<a onclick=""runDameWare('" & strHostname & "', true);"">"
    strViewLink &= "<img alt=""Connect (View Only) using DameWare"" src=""Image/dameware2.gif"" style=""padding: 2px;"" />"
    strViewLink &= "</a>"
    Return strFullLink & strViewLink
End Function
0 голосов
/ 24 августа 2011

Поскольку на машине уже должна быть установлена ​​эта «скрытая» программа, почему бы просто не написать собственное приложение и установить его, а сотрудник запустить его вместо вашего веб-приложения?

...