我编写了一个客户将在 Windows Server 上安装的软件,并编写了一个 HTML 页面作为安装指南。如何在 HTML 页面上创建一个链接,该链接将以管理员身份调用我的 .bat 脚本。.bat 脚本将为客户处理安装。HTML 页面将作为文件运行,即没有任何服务器(包括本地主机)。.bat 脚本、html 页面和二进制文件将位于同一文件夹中。该文件夹可能位于 Windows 服务器上的任何位置(我不知道客户会将文件夹放在哪里)。
2 回答
在 Internet Explorer 中:
file://mydirectory/myfolder/mybatchfile.bat
大多数浏览器不允许此功能,因为它对网页上的链接能够运行本地文件构成巨大的安全风险。他们中的大多数都有禁用该安全功能的扩展程序。但是,我还没有测试它们中的任何一个以查看它们是否有效。 然而,即使发生这种情况,.bat 运行也会像下载一样发生。浏览器将“下载” .bat 文件,然后让用户有机会保存或运行它。除非您的批处理文件在文件本身内进行管理提升,否则用户将不得不以管理员身份手动运行它。
请记住,这些保护措施的存在是有原因的,绕过它们并不是一个好主意。然而,归根结底,没有办法让浏览器自行执行该代码。(谢天谢地!)有更好的方法来完成这些任务。
如果您想提供有关您要完成的工作的更多详细信息,我相信我们可以提供更安全的方法来做您想做的事情。
这样做的一种方法是使用 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 请求运行批处理文件是一个坏主意,那么以管理员身份运行批处理文件会更糟。避免这种情况。