如何在客户端运行批处理文件?一个exe文件?只是在客户端打开预装程序?
[编辑]
关于ActiveX,我试过
var activeXObj = new ActiveXObject("Shell.Application");
activeXObj.ShellExecute("C:\\WINDOWS\\NOTEPAD.EXE", "", "", "open", "1");
但这不起作用。有什么建议吗?
答案 0 :(得分:37)
来自Javascript?你不能。这是一个安全风险。想一想 - 您希望每个网站都能在您的PC上运行程序吗?
答案 1 :(得分:11)
您是指使用JavaScript通过浏览器窗口启动外部程序?你无法做到这一点!那是一个该死的安全黑洞!
答案 2 :(得分:8)
<script language="javascript" type="text/javascript">
function RunEXE(prog) {
var oShell = new ActiveXObject("WScript.Shell");
oShell.Run('"' + prog + '"', 1);
}
</script>
答案 3 :(得分:6)
如果你真的掌握了客户端,那么你可能想在客户端安装一些远程守护进程服务,比如SSH。
PS。但是,通过“服务器代码”调用它。
更新:
不要气馁。你绝对可以安全地做到这一点。
首先,您需要在客户端上提供一个守护程序服务,该服务将处理调用您的应用程序的任务。就个人而言,我宁愿使用C ++或Delphi构建简单的rpc-server作为windows-service;但许多其他类型的服务器也可以完成这项工作(SSH,Apache,Telnet)
然后制作一个网页,允许用户通过适当的身份验证“注册”他们的服务以调用该服务(密码,安全密钥)
如果要在已注册的客户端上从网页调用应用程序,请对服务器进行ajax调用(xmlhttprequest)。
服务器应使用注册信息验证请求的IP地址。
然后使用注册信息向客户端发出远程命令调用。
可能存在一些网络情况,该方案可能无效。但是,如果您真的可以控制执行环境,那么总会有一些解决方法。
答案 4 :(得分:5)
将客户端重定向到http://yourserver/batchfile.bat。在某些浏览器中,这将提示用户运行批处理文件。
答案 5 :(得分:3)
如果问题是浏览器中显示批处理文件,则需要在HTTP标头中设置Content-Type
和Content-Disposition
,以提示用户保存(或运行)文件而不是让浏览器显示它。
如果没有来自用户的确定,您将无法运行该文件,但这应该不是问题。
答案 6 :(得分:0)
基本上,你不能。如果你需要在客户端启动一些东西,你需要另外一个机制,大概是一个内置了一些安全性的机制。之前的海报提到了psexec(http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx),这显然只有你拥有适当的权限才能工作在目标系统上,它完全在浏览器之外。
基本上,如果你能够轻松地做到这一点,你所要求的是一个很大的问题。
您可能会查看ActiveX,但我不知道这些天ActiveX对象有什么限制(我知道有限制,但也许您可以在其中工作)。
答案 7 :(得分:0)
出于安全原因,不允许直接使用。除了所有其他答案之外,还有一个想法。
您可以在预安装的程序中构建一个本地主机休息服务,并使用javascript通过命令或数据调用它,并且假设您编写了预安装的程序并且该服务应该在您调用时运行。此解决方案适用于某些场景。