默认情况下 PHP 运行在IUSR帐户。直接执行时:
$lastline = exec('D:\\MyProgram.exe', $output, $return_var);
它可以运行,但由于权限不足,程序无法执行其任务。我的问题是:如何在 PHP 网站的特定 Windows 帐户下运行可执行文件?
我试过了:
当执行时通过系统内部 PsExec:
$lastline = exec('D:\\PsExec.exe -u UserName -p Password -accepteula "D:\\MyProgram.exe"', $output, $return_var);
MyProgram.exe 甚至根本不执行。 PHP 抛出空输出并且 return_var 是-1073741502
。我认为这是某种未处理的异常。
当执行时通过lsrunas:
$lastline = exec('D:\\lsrunas.exe /user:UserName /password:Password /domain:DOMAIN /command:"D:\\MyProgram.exe" /runpath:D:\\', $output, $return_var);
MyProgram.exe 也不执行。 PHP 抛出空输出并且 return_var 是0
.
微软内置的runas
命令不起作用,因为它不接受密码作为参数。
尝试使用不同的 PHP 函数,例如shell_exec
, system
and passthru
尝试在 IIS 下创建一个新的应用程序池,以在本地服务、系统或特定用户下运行网站。
编辑:这是我出错的地方。它应该可以工作,但在未启用“加载用户配置文件”设置时会失败(我的答案中的步骤 3)。
有人有工作建议吗?
注意:所有命令都直接通过命令行运行和测试。