我有一个应用程序,我正在尝试在Intranet上运行。在我的机器上它工作得很好(着名的遗言)但是当我把它放到服务器上时,它没有用。当我看到“系统找不到指定文件”错误时,我认为它必须是尝试运行客户端计算机上的程序。
是的,如果浏览器中的任何应用程序可以在客户端计算机上运行可执行文件,那将是一场安全噩梦。内联网有什么不同吗?它运行的几台计算机都有与之相同的IE和.NET版本,并且它们都具有运行所需的.exe。
以下是该项目的概述:
任何人都可以帮我解决这个问题(至少让我知道这不可行)?
答案 0 :(得分:8)
一个想法:您可以注册Protocol handler以使用所需参数启动您的应用。
答案 1 :(得分:3)
有几种方法可以做到这一点。一个人不违反安全(很多)。
您可以下载具有特定文件类型的文件。该文件类型可以与客户端程序关联,因此在单击“确定”下载文件后,客户端程序将启动。下载的文件可能包含也可能不包含某些数据,如某些对象的ID。
另一种方法是使用ActiveX, 具有安全隐患。
答案 2 :(得分:1)
如果您将您的网站放在IE Trusted或Intranet区域,以下Javascript将正常工作。我在内部使用这个将PC支持数据库搜索链接到我们的远程屏幕控制软件:
<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
类将本地程序中的工作结果上传到Web服务器,如本文所示:
http://forums.asp.net/p/1482778/3464854.aspx
编辑:
这就是我调用上面这个函数的方法。基本上我只是使用<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
答案 3 :(得分:0)
由于机器已经需要安装这个“隐藏”程序,为什么不只是编写一个本机应用程序并安装它并让员工运行它而不是你的Web应用程序?