我们正在开发一个只能在Intranet上运行的站点,并且有权访问这个Intranet的计算机将安装这个可执行文件。 我们不能有任何“你想打开[文件名] .exe?” 提示。 点击链接,程序开始运行。
我意识到赋予网站在客户端机器上运行可执行文件的能力是非常非常糟糕的,但是pipe理层拒绝对此加以改进。
机器将有Windows(XP或以上)与Firefox 3。
我们正在开发一个只能在Intranet上运行的站点,并且有权访问这个Intranet的计算机将安装这个可执行文件。
这是否意味着EXE已经安装在桌面上? 你只是想从网站上启动它?
如果是这样,您可以将EXE与MIME内容类型关联,当用户点击它时,它将启动。
为您的EXE名称选择内容类型和文件扩展名,例如:
CauseChaos.exe 与.chaos文件扩展相关联 内容类型将是:应用程序/混乱
通过EXE安装将文件扩展名与EXE关联起来。 我在这里展示它,使用InnoSetup
[Registry] Root: HKCR; Subkey: .chaos; ValueType: string; ValueData: CauseChaos; Flags: uninsdeletekey Root: HKCR; Subkey: CauseChaos; ValueType: string; ValueData: CauseChaos Tool; Flags: uninsdeletekey Root: HKCR; Subkey: CauseChaos\DefaultIcon; ValueType: string; ValueData: {app}\CauseChaos.exe,0; Flags: uninsdeletekey Root: HKCR; Subkey: CauseChaos\shell\open\command; ValueType: string; ValueData: "{app}\CauseChaos.exe ""%1"""; Flags: uninsdeletekey
通过EXE安装将MIME内容类型与文件扩展名相关联。
[Registry] (continued...) Root: HKCR; Subkey: HKCR\Mime\Database\Content Type\application/chaos; ValueType: string; ValueName: Extension; ValueData: .chaos; Flags: uninsdeletevalue
去过也做过。 MIME类型(在我添加这个时候接受的答案)需要在客户端和服务器上进行大量的配置。这是相当多的工作,最后是临时文件等。
我们的解决方案是添加我们自己的“自定义URL协议处理程序”。 基本上,添加URL类型x-our-intranet并使您的企业应用程序为它的URL处理程序。 现在,任何链接都将启动您的企业应用程序,将“x-our-intrenet:foo”作为命令行参数传递。 它只需要一个客户端注册表项,类似于MIME类型。
试试这个JavaScript:
function executeCommands(inputparms) { // Instantiate the Shell object and invoke its execute method. var oShell = new ActiveXObject("Shell.Application"); var commandtoRun = "c:\windows\Notepad.exe"; // Invoke the execute method. oShell.ShellExecute(commandtoRun, commandParms, "", "open", "1"); }
您将不得不相应地设置浏览器的安全设置,这只会在IE浏览器。
唯一可以想象这种工作的方式是通过某种可以运行可执行文件的ActiveX控件,但是我不知道Firefox的可行性。
这应该是你应该拒绝让步的事情之一,而不是管理层。
我建议你看一看Adobe Flex / Air ,它是根据这个模型设计的,它打开的是固有的安全谷仓门。
我同意其余的,我敢肯定,你不能再这样做了(特别是在Firefox中)。 这就是当天有多少间谍软件/广告软件安装完毕。 你将不得不采取立场,告诉管理层它是不可能的。
一个有效的X控件是最简单的方法。 有一个Firefox的插件,允许你主持X控件。 或者你可以写一个NS插件来处理这个问题。
这是关于web部署可执行文件的旧文章。 我知道这是可能的使用Internet Explorer(因为我们分散的开发团队,我们仍然需要支持一些)。 我不知道有关Firefox的影响。
在用于IE的链接中使用“file:/// c:/ Program Files / myprogs / myprog.exe”URL。 但是,我很久没有尝试过了。
我会推荐上面的MIME类型方法,或者添加一个由该可执行文件处理的特殊URI前缀“chaos:// myparams”。
我完全理解你想要什么。 我在互联网上阅读的所有人都提到这是一个很大的安全漏洞等…但是,我不认为他们明白你为什么要这个实现,我会解释为什么我需要这个,并正在解决这个问题,我正在接近。
我有许多不同的用户应用程序,例如。 呼叫中心等…我目前正在运行Kiosk模式的锁定桌面上工作。 所有的用户将看到一个蓝屏与一些计算机信息和一个IE图标。 我的目标是从此页面运行Microsoft Office和一些内部的客户端/服务器应用程序。 它工作得很好,因为一切仍然存在,只是我的用户看不到它。 不过,我有和你一样的问题。 我的网络非常安全,利用MPLS,内部和外部管理的路由器,防火墙/ ASA和大量的安全专家。 另外,这只是内部的。 所以,我认为它完全可以。 所以,如果我想出了一些这种解决方法,我会发布它。
我甚至不知道这是否可能。 正如上面提到的可能使用ActiveX控件,但是你将遇到浏览器支持和人员安全设置的问题。 更不要说劫持某人的PC的道德含义。