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

IT技术 javascript batch-file executable client-side
2021-01-20 10:25:56

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

[编辑]

关于 ActiveX,我试过了

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

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

6个回答

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

您可能可以使用 Microsoft ClickOnce 实现此目的(不可靠,需要 IE 和 .NET 应用程序) 请提供更多上下文:此网页在哪里?应用程序是什么?
2021-03-14 10:25:56
例如,您可以有一个批处理文件来恢复 Intranet 站点上的驱动器映射
2021-03-19 10:25:56
我知道这是一个安全风险,但这是在客户端上运行预安装程序并来自 Javascript 的迫切要求?
2021-04-01 10:25:56
pjc50 并不是指不可取的“安全风险”,而是指浏览器不允许的“安全风险”。
2021-04-08 10:25:56

您的意思是使用 JavaScript 通过浏览器窗口启动外部程序?你怎么可能这样做!这该死的安全黑洞!

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

    function RunEXE(prog) {
        var oShell = new ActiveXObject("WScript.Shell");
        oShell.Run('"' + prog + '"', 1);
    }     
</script>
以上解决方案仅适用于 IE,需要用户权限才能运行 ActiveX,但它有效!!
2021-04-12 10:25:56

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

附注。但是,通过您的“服务器代码”调用它。

更新:

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

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

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

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

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

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

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

这仍然是一个可怕的解决方案,但它是如此的滑稽可笑,真是太棒了。理论上它可以完成,并且是“安全的”,假设您可以信任服务器可以通过 SSH 访问客户端。它只适用于 Intranet 设置,实际上它永远不会成为一个实用的好解决方案,但它很棒而且没有浏览器插件(例如,Flash、Silverlight、Java 小程序)!确实需要太多的配置才能让它被那些甚至会要求它的白痴用户使用。
2021-03-22 10:25:56
终于有人说得通了。所有的答案都是。在这方面过时了。地点。谢谢,兄弟
2021-03-25 10:25:56
但是如何从网页/ javascript 执行此操作?
2021-03-27 10:25:56
对您的服务器进行 ajax 调用。
2021-03-28 10:25:56

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

@Ahmed,...批处理文件可以很好地引用本地安装的东西。
2021-03-19 10:25:56
如果用户选择“运行”,它会将批处理文件下载到 PC,并在那里执行。
2021-03-25 10:25:56
@Ahmed:他建议您指示浏览器下载 .bat 文件并让用户执行它。
2021-03-29 10:25:56
yourserver/batchfile.bat是服务器端,要执行的文件是客户端?
2021-03-29 10:25:56