在PHP exec()函数中执行exe时,Windows API函数FindWindow始终返回0

时间:2011-06-16 15:17:22

标签: php windows api exec findwindow

我已经创建了一个命令行应用程序来在服务器上执行某些任务。例如,它“跟踪”一个窗口并向其发送密钥。我使用windows API函数findWindow()来查找窗口。当我从命令行运行exe时它工作得很好,除非我使用exec()函数从PHP运行它。 FindWindow函数总是返回0(它找不到窗口句柄),为什么?它是在沙箱中运行吗?

我该怎么办?任何人吗?

感谢您的回答。

亲切的问候, Erwin Haantjes

1 个答案:

答案 0 :(得分:1)

服务无法在前台用户会话中查找窗口。这称为session-0 isolation

PHP在Web服务器下运行,该服务器(通常)在特定会话/上下文中作为服务运行。因此,findWindows()函数将失败。

您可以通过调用PHP.exe从您自己的会话命令行运行脚本来测试此理论。