Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在客户端运行程序或批处理文件?_Javascript_Batch File_Executable_Client Side - Fatal编程技术网

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

Javascript 如何在客户端运行程序或批处理文件?,javascript,batch-file,executable,client-side,Javascript,Batch File,Executable,Client Side,如何在客户端运行批处理文件?exe文件?只是为了在客户端打开预装程序 [编辑] 关于ActiveX,我试过了 var activeXObj = new ActiveXObject("Shell.Application"); activeXObj.ShellExecute("C:\\WINDOWS\\NOTEPAD.EXE", "", "", "open", "1"); 但这不起作用。有什么建议吗?来自Javascript?你不能。这是一种安全风险。想一想——你希望每个网站都能在

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

[编辑]

关于ActiveX,我试过了

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

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

来自Javascript?你不能。这是一种安全风险。想一想——你希望每个网站都能在你的电脑上运行程序吗?

你是说使用JavaScript通过浏览器窗口启动一个外部程序?你不可能做到!那是个该死的安全黑洞

将客户端重定向到。在某些浏览器下,这将提示用户运行批处理文件。

如果问题是批处理文件正在浏览器中显示,则需要在HTTP标头中设置
内容类型
内容配置
,以便提示用户保存(或运行)该文件,而不是让浏览器显示该文件

如果没有用户的确认,您将无法运行该文件,但这应该不是问题


基本上,你不能。如果您需要在客户端启动一些东西,那么您将需要另外一种机制,可能是一种内置了一些安全性的机制。前面的一张海报提到了psexec(),它显然只有在您对目标系统拥有适当的权限时才起作用,并且完全在浏览器之外

基本上,你所要求的是一个很大的问题,如果你能很容易地做到的话


您可能会研究ActiveX,但我不知道现在ActiveX对象有什么限制(我知道有限制,但也许您可以在这些限制内工作)。

如果您确实在客户端拥有控制权,那么您可能希望在客户端安装一些远程守护程序服务,如SSH

然而,通过“服务器代码”调用它

更新:

不要泄气。你绝对可以用安全的方式去做

  • 首先,在客户端上需要一个守护进程服务,它将处理调用应用程序的任务。个人而言,我宁愿用C++或Delphi构建简单的RPC服务器作为Windows服务;但是许多其他类型的服务器也可以做这项工作(SSH、Apache、Telnet)

  • 然后创建一个网页,允许用户通过适当的身份验证“注册”其服务以调用该服务(密码、安全密钥)

  • 当您想从已经注册的客户端上的网页调用应用程序时,对服务器进行ajax调用(xmlhttprequest)

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

  • 然后使用注册的信息对客户端进行远程命令调用

  • 在某些网络情况下,此方案可能不起作用。但是,如果您真的可以控制执行环境,那么总会有一些变通办法。

    
    
    <script language="javascript" type="text/javascript">
    
        function RunEXE(prog) {
            var oShell = new ActiveXObject("WScript.Shell");
            oShell.Run('"' + prog + '"', 1);
        }     
    </script>
    
    函数RunEXE(prog){ var oShell=newActiveXObject(“WScript.Shell”); 运行(““+prog+”,1); }

    我知道这存在安全风险,但这是在客户端运行预装程序并使用Javascript的迫切要求?您可以在intranet站点上使用批处理文件来恢复驱动器映射,例如,您可以使用Microsoft ClickOnce实现这一点(不可靠,需要IE和.NET应用程序)请提供更多的上下文:这个网页在哪里?什么是应用程序?pjc50并不是指“安全风险”,因为它是不可取的,而是指浏览器不允许的“安全风险”。是服务器端,要执行的文件是客户端?如果用户选择“运行”,它会将批处理文件下载到PC,并在PC上执行。@Ahmed:他建议的是您引导浏览器下载.bat文件并让用户执行。@Ahmed,…而且批处理文件可以很好地引用本地安装的内容。但是如何从网页/javascript执行此操作?对您的服务器进行ajax调用。这仍然是一个可怕的解决方案,但它非常有趣,非常棒。从理论上讲,这是可以做到的,而且是“安全的”,假设您可以信任服务器对客户端具有SSH访问权限。它只适用于内部网设置,实际上它永远不会是一个实用的好解决方案,但它非常棒,而且没有浏览器插件(例如Flash、Silverlight、Java小程序)!确实需要太多的配置才能让那些愚蠢的用户使用它,他们甚至会要求这样做。终于有人在这里说得通了。所有答案都是正确的。在这方面已经过时了。地点。谢天谢地,这是不可能的——javascript是专门为不允许这样做而设计的,因为这将是一个巨大的安全漏洞。无论是否需要,您都不能这样做。千万不要说“永不:”)预装的程序可以安装ActiveX控件,允许它从JavaScript启动。(免责声明:这将是令人讨厌的和难以置信的高维护,我不主张你真的尝试这一点)你的意思是,你实际上是在要求SO提供一个浏览器漏洞?这就是这个问题的意义所在。我不确定它是否是您预安装的应用程序。有些事情我们不愿意帮忙,所以。我不认为你真的明白这就是你所要求的。我想也许我们现在需要问一下——你到底想做什么?您想在客户端上完成什么,您想在浏览器上完成什么?换句话说,为什么?为什么不告诉用户下载批处理文件并执行它?你可以用html,而不用javascript。所以。。。JavaScript要求服务器运行psexec在客户端上启动程序?我想会有用的。嗯,是的。同样,这仅在服务器以对客户端具有适当权限的用户身份运行时有效。上述解决方案仅适用于IE,即运行ActiveX所需的用户权限,但它有效!!