从HTML页面调用.bat脚本

时间:2014-02-12 21:42:32

标签: javascript html html5 batch-file spritebatch

我编写了一个客户将在Windows Server上安装的软件,我编写了一个安装指南的HTML页面。如何在HTML页面上创建一个链接,以管理员身份调用我的.bat脚本。 .bat脚本将处理客户的安装。 HTML页面将作为文件运行,即没有任何服务器(包括本地主机)。 .bat脚本,html页面和二进制文件将位于同一文件夹中。该文件夹可以位于Windows服务器上的任何位置(我不知道客户将放置文件夹的位置)。

2 个答案:

答案 0 :(得分:0)

这样做的一种方法是使用AJAX和脚本的组合来实现这一目标。

对于这个例子,我将假设使用jQuery和PHP(因为它们非常常见)。

jQuery只是缩短了,大多数/所有语言都可以使用此功能。

假设你有一个这样的页面:

<html>
<body>
  <a id="foo" href="#">Install</a>
  <script src="install.js"></script>
</body>
</html>

你的javascript看起来像这样:

$("#foo").on("click", function(){
  $.post('install.php');
});

在install.php文件中,您可以这样:

<?php
  exec("mybatch.bat");

<?php
  exec("cmd.exe /c test.bat");

然而

请注意,您想要做的事情存在安全问题。

只有在您确定环境安全的情况下才能执行此操作。

以管理员身份运行

如果没有客户端计算机的合作,这是一件非常困难的事情。

您或多或少必须以管理员身份运行PHP或本地安装的任何语言。

此外,如果从POST请求运行批处理文件是个坏主意,以管理员身份运行批处理文件会更糟。避免这种情况。

答案 1 :(得分:0)

在Internet Explorer中:

file://mydirectory/myfolder/mybatchfile.bat

大多数浏览器不允许此功能,因为它会给网页上的链接带来巨大的安全风险,从而无法运行本地文件。他们中的大多数都具有禁用该安全功能的扩展。 I haven't tested any of them to see if they work, however. 但是,即使发生这种情况,.bat运行也会像下载一样发生。浏览器将“下载”.bat文件,然后让用户有机会保存或运行它。除非批处理文件在文件本身内进行管理提升,否则用户必须以管理员身份手动运行它。

请记住,这些保护措施存在是有原因的,绕过它们并不是一个好主意。但是,在一天结束时,没有办法让浏览器自己执行该代码。 (谢天谢地!)有更好的方法来完成这些任务。

如果您想提供有关您要完成的工作的更多详细信息,我相信我们可以更安全地做您想做的事情。