如何使客户机上的程序从ASP运行?网络页面
本文关键字:运行 网络 ASP 客户机 何使 程序 | 更新日期: 2023-09-27 18:06:28
我有一个应用程序,我试图在内部网上运行。在我的机器上,它工作得很好(著名的最后一句话),但当我把它放在服务器上时,它不起作用。当我看到"系统无法找到指定的文件"错误时,我认为这一定是试图在客户端机器上运行程序的问题。
是的,如果浏览器中的任何应用程序都可以在客户端机器上运行可执行文件,这将是一场安全噩梦。内部网有什么不同吗?运行它的少数几台计算机都有相同版本的IE和。net,并且它们都有需要运行的。exe。
项目概述:
- 员工和参与者走进一个有电脑的房间。
- 员工打开我的web应用程序,查找人的ID(这部分工作)
- 点击"记录"应该执行一个隐藏的启动已经安装的程序,开始记录。
- 完成后,员工点击完成(或app超时),文件被保存。
- 文件上传到服务器。
- 员工缺乏技术经验,所以我的目标是为他们提供一个网站,那里只有一个获取参与者ID的框和两个巨大的"记录"answers"停止"按钮
一个想法:你可以注册一个协议处理程序来启动你的应用程序所需的参数
有几种方法可以做到这一点。一个人不会(太多地)违反安全。
您可以下载具有特定文件类型的文件。该文件类型可以与客户端程序相关联,因此单击"确定"下载文件后,客户端程序将启动。下载的文件可能包含也可能不包含某些数据,例如某些对象的id。
另一种选择是诉诸ActiveX,而确实有安全隐患。
如果您将站点置于IE可信或Intranet区域,则下面的Javascript将正常工作。我在内部使用这个将我们的PC支持DB搜索连接到我们的远程屏幕控制软件:
<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>
我的理解是,将本地程序中的工作结果上传到web服务器可以使用HttpWebRequest
类来完成,如本文所示:
编辑:这就是我如何调用上面的函数。基本上,我只是渲染一个普通的<a>
元素与onclick
属性。可能有一种更干净的方法,但它可以工作:
标记:
<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
既然机器已经需要安装这个"隐藏"程序,为什么不直接编写一个本地应用程序并安装它,让员工运行它而不是你的web应用程序呢?