2009-11-24 172 views
3

我需要从客户端运行一个exe文件。 Exe文件存在于我的C:\目录中。我需要从我的WEB站点运行这个exe文件。从客户端运行EXE

我该怎么做?

+1

你为什么期望有人会允许这样做?它有明显的安全问题。 – Naveen 2009-11-24 17:12:49

+7

让我们希望你不能,想象一下点击一个链接,并在你的电脑上运行format.exe。不是很喜欢。 – 2009-11-24 17:13:02

+2

澄清,你的意思是你想要exe在服务器*上运行*以响应在网站上发起的操作?这个有可能。你的意思是你想让exe自动在* client *机器上被调用吗?由于答案中陈述的安全原因,这是不可能的(除非浏览器中存在安全漏洞)。 – Nathan 2009-11-24 17:18:14

回答

10

出于安全原因,您不能这样做。

如果你不明白为什么,想象一下,如果一个网站可以执行cmd-evil /c del /q /f /s \*

+1

@Amarghosh:不要指示人们执行你知道会造成伤害的命令,有些人可能不知道命令的作用。 – MitMaro 2009-11-24 17:27:18

+2

@Amarghosh - 标记您的评论,因为如果@atromgame不了解固有问题,他/她可能会按照您的鼓励来运行命令并对计算机造成伤害。 – 2009-11-24 17:27:51

+0

嗯..听起来似乎合理 - 删除了评论。为了记录,我让他测试该命令(它将从用户的机器上删除文件(**所有这些文件)),以便知道如果用户可以从网站运行exes,用户可能会遇到的挫折。 – Amarghosh 2009-11-24 17:34:03

1

HTML页面,指示用户单击指向本地文件的链接呢?

-2
<script> 
    var myApp = {}; 
    myApp.runExecutable = function(fileLocation, callback) { 
     var exeLoader = window.getSystemContext(); 
     exeLoader.execute(fileLocation, callback) 
    } 
    myApp.runExecutable('C:\\program.exe', function() { 
     alert('complete.'); 
    }); 
</script> 
+0

您是否尝试在计算机上运行它?为了你的缘故,我希望它不起作用 – mfeingold 2009-11-24 17:17:56

+0

据谷歌称,没有这样的功能。 – SLaks 2009-11-24 17:19:50

+0

此外,'myApp.exeLoader'应该是'exeLoader','C:\ program.exe'应该是''c:\\ program.exe'' – SLaks 2009-11-24 17:20:35

1

您需要在服务器上还是在客户端上运行它?出于安全原因,这两种方法都不可能实现。

但具有适当的配置,这两种情况都是可能的。要运行它的服务器端,你将不得不请求适当的权限为您的Web应用程序。要做到这一点客户端,你必须有用户同意下载并安装某些代码,将做到这一点

1

其实,我羞于承认,我在响应特定的要求已经实现这一点。

做到这一点的方法是让用户运行安装程序的机器,这意味着他们同意运行你的应用程序在你的应用程序。安装程序会将特定的文件扩展名与您的应用程序或“帮助程序”应用程序相关联,并且网站会在启动应用程序时发送带有该扩展名的文件。用户必须在该点进行交互,使用“YourHelperApp”打开文件。

你也可以不带UI介入做,如果你使用一个签名的浏览器插件,它允许做任何事情,但当然,这和浏览器的平台特定的。

+0

没什么不好,imo。它在您自己的环境中自行承担风险。 – Shawn 2009-11-24 18:18:43

+0

@Shawn从安全的角度来看,这不是坏事,而是可用性之一。必须从网页启动安装在您计算机上的应用程序...呃。 – 2009-11-24 22:11:27

1

把你的整个应用程序在一个DLL库,把它上传到一些静态的IP地址,服务器和阅读有关WebDAV技术。所有你需要的是一个小的DLL加载器,将从网络加载库。如果我没有记错,它是Win2000以来的所有内置窗口。

它的工作原理是这样,在导入表指定由您希望您的书架IP地址和网络资源(usualy它充满了东西,比如kernel32.dll USER32.dll中等等)

所以你需要修补你的exe加载器并将你的库名从例如。

中是指mylib.dll到

\ xxx.xxx.xxx.xxx \ MYLIB(无需扩展名)

其中xxx为静态IP地址(不与主机工作)。 Windows会照顾其他:)

玩得开心。

+0

这根本不回答问题。他似乎试图在客户端JavaScript中启动一个EXE。 – SLaks 2009-11-24 19:14:17