我用 php 编写了一个 Web 程序,需要在运行时停止 Windows 服务并启动它,如下所示:
exec('net stop spooler'); //to stop printer spooler
exec('net start spooler'); //to start printer spooler
上述代码并不能停止打印机后台处理程序,我想我知道原因,因为当我正常打开 cmd - 命令提示符并输入时,net start spooler
我得到访问被拒绝...但是当我以管理员身份打开 cmd - 命令提示符时,命令行将工作,所以我认为 apache 也需要被授予管理员权限,以便上述代码可以工作,但我不知道如何授予代码以管理员身份运行的权限。
单击“开始”>“键入运行”>“在运行命令中键入 services.msc”时,可以找到打印机后台处理程序 Windows 服务,然后您将看到打印机后台处理程序作为 Windows 服务之一...当上述代码运行时...它应该停止该服务或启动它
答案1
您sc
也尝试过该命令吗?类似问题
不用经历管理执行环节,不如让 PHP 写入文件(一个物理文件),然后分离程序以管理员权限运行,触发命令net stop
?这不仅确保执行,而且确保安全性。为了获得最佳可靠性,您可以使用快速的 VB.NET 应用程序Timer
每 x 秒检查一次文件,但我相信您也可以在紧急情况下使用运行的批处理文件。但使用 VB.NET,您可以在后台在其自己的线程上运行该进程,并确保它保持运行。
希望这能给你一些启发。