2

我需要一个 web 脚本来执行一个 exe 文件,然后将 exe 上的结果返回给 web 请求。

我可以回显 exe 的结果或修改 exe 以将其结果保存到文件中,然后读取文件以回显 Web 请求。

问题是在 IIS 下使用 php 所有 exec() shell_execute() system() 类型函数会出现“无法分叉”错误,因为 IIS 匿名用户 IUSER_%COMPUTER_NAME% 无权访问 C:\windows\system32\cmd 。可执行程序

这可以通过更改此 IIS 匿名用户对 cmd.exe 的权限来解决,但这会严重削弱安全性(我相信)。

有什么方法可以通过 IIS 下的 PHP 脚本调用 Exe 而不向 IIS 匿名用户打开 cmd.exe 吗?

帮助表示赞赏。

为什么我需要这样做?我有一个序列号生成器,当某人通过信用卡购买我的产品时,我的支付处理器需要调用一个 url,将许可证名称作为参数传递,并返回该许可证名称的序列号。

我的许可证密钥生成器是 WinLicense,我有一个 exe。

我需要运行类似的东西

shell_exec("C:\inetpub\wwwroot\test.com\testLicense.exe \"".$regName."\""); // 或 exec() 或 system()

(testLicense.exe 将结果存储在我的 php 脚本可以回显的文件中)

4

1 回答 1

2

非常仔细地过滤您提供给 exec() 的变量。

仅将整数用于数字信息

如果它是一个文件名,使用 file_exists() 来确认它是一个真实的文件名

如果它是字符串,请使用正则表达式并删除 ' 和 " 和 \ 和 ; 这样的字符,因此其中的任何命令都不会运行。

于 2009-04-26T01:50:08.737 回答