如何在客户端运行程序或批处理文件?

Ahm*_*med 6 javascript executable batch-file client-side

如何在客户端运行批处理文件?一个exe文件?只是在客户端打开预装程序?

[编辑]

关于ActiveX,我试过了

    var activeXObj = new ActiveXObject("Shell.Application");
    activeXObj.ShellExecute("C:\\WINDOWS\\NOTEPAD.EXE", "", "", "open", "1");
Run Code Online (Sandbox Code Playgroud)

但这不起作用.有什么建议?

pjc*_*c50 35

来自Javascript?你不能.这是一个安全风险.想一想 - 您希望每个网站都能在您的PC上运行程序吗?

  • pjc50并不意味着"安全风险",因为它是不可取的,而是"安全风险",因为浏览器不会允许它. (12认同)

Dre*_*nic 11

你的意思是使用JavaScript通过浏览器窗口启动外部程序?你无法做到这一点!那是一个该死的安全黑洞!


小智 8

<script language="javascript" type="text/javascript">

    function RunEXE(prog) {
        var oShell = new ActiveXObject("WScript.Shell");
        oShell.Run('"' + prog + '"', 1);
    }     
</script>
Run Code Online (Sandbox Code Playgroud)


Sak*_*ake 6

如果您真的可以控制客户端,那么您可能希望在客户端安装一些远程守护程序服务,如SSH.

PS.但是,通过"服务器代码"调用它.

更新:

不要气馁.你绝对可以安全地做到这一点.

  1. 首先,您需要在客户端上提供一个守护程序服务,该服务将处理调用您的应用程序的任务.就个人而言,我宁愿使用C++或Delphi构建简单的rpc-server作为windows-service; 但许多其他类型的服务器也可以完成这项工作(SSH,Apache,Telnet)

  2. 然后制作一个网页,允许用户通过适当的身份验证"注册"他们的服务来调用该服务(密码,安全密钥)

  3. 如果要在已注册的客户端上从Web页面调用应用程序,请对服务器进行ajax调用(xmlhttprequest).

  4. 服务器应使用注册信息验证请求的IP地址.

  5. 然后使用注册信息向客户端进行远程命令调用.

可能存在一些网络情况,该方案可能无效.但是,如果您真的可以控制执行环境,那么总会有一些解决方法.


And*_*mar 5

将客户端重定向到http://yourserver/batchfile.bat.在某些浏览器下,这将提示用户运行批处理文件.