PHP如何启动Windows GUI应用程序


PHP how to launch windows GUI application

对不起,如果这似乎是愚蠢的问题。我无法以任何方式通过PHP启动Windows GUI应用程序。我已经尝试了从类似问题中发现的任何解决方法,但它们根本不起作用。

我的命令:

$cmd = 'E:'soft'Notepad++'notepad++.exe E:'text.php';

我可以通过窗口命令行工具运行该命令,它工作正常,记事本++启动并打开了具有预期内容的GUI。我想在 php 中做到这一点

我已经打开了Windows服务并为"wampapache"服务设置了"允许服务与桌面交互"选项(选中),并重新启动它。

我已经尝试了以下每个命令:

pclose(popen("start /B $cmd", "r"));

system("start $cmd");

exec("C:''windows''system32''cmd.exe /c START " . $cmd);

$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run($cmd, 0,false);

他们都给了我相同的结果:它只是在后台运行应用程序,我可以通过查看Windows的任务管理器看到正在运行的应用程序进程,但是GUI没有显示。

我的 PHP 版本是 5.4.3

任何帮助,不胜感激。

我假设PHP在Apache中运行,而Apache又是一种服务。

现在,从服务启动任何应用程序都不会显示其GUI,因为服务在单独的会话中运行,不允许与用户桌面交互。

有关更多详细信息,请参阅此答案:启动进程的服务不会显示 GUI C#

但是,还有其他方法可以实现此目的。

  1. 创建自定义C++(或等效)应用程序,该应用程序将为给定用户创建目标 GUI 应用程序。答案 Windows 服务如何执行 GUI 应用程序?为此解释了CreateProcessAsUser()。此方法需要指定用户名和密码。

  2. 创建自定义客户端-服务器类型的应用程序。服务器部分将始终在需要显示 GUI 的用户模式下运行。客户端将从 PHP 调用。当调用客户端时,它将使用类似 IPC 的事件向服务器部分发出信号。服务器可以依次启动 GUI 应用程序。

  3. 使用Microsoft的 PSEXEC 实用程序在 GUI 中启动该过程。但是,这将需要用户名、密码和会话 ID。

    psexec.exe ''REMOTE -u USER -p PASS -i SESSION -d C:'Windows'Notepad.exe

    会话

    是会话 ID(使用任务管理器 -> 用户选项卡查看会话 ID)

    用户,PASS 是用户的用户名和密码