在 windows 服务器上使用来自 PHP (IIS) 的 schtasks 时访问被拒绝

Access denied when using schtasks from PHP (IIS) on windows server

我正在尝试 运行 使用 exec() 调度任务,但总是收到拒绝访问错误作为响应。

在我的本地 win10 机器上,它可以无缝运行,但在 windows 服务器 2019 上,脚本退出并出现错误。我发现了几个类似的问题,但他们没有回答,或者给定的答案对我的具体问题不起作用。不幸的是,该错误未指定 WHO 缺少对 WHAT 的许可。所以我尝试根据其他一些答案让 IUSR 和 IIS_USERS 访问 cmd.exe、schtasks.exe 和 taks 文件夹(C:\Windows\System32\Tasks)。

我的代码示例:

<?php
$results = array(
    "output" => NULL,
    "code" => NULL
);
exec(
    'schtasks /create /sc MONTHLY /tn AtlantisPrint /tr C:\SoftwarehausHeider\Atlantis\prog\atlantis.exe /ru Administrator /rp XXXX /f 2>&1',
    $results["output"],
    $results["code"]
);
echo "<pre>" . print_r($results, TRUE) . "</pre>";

结果:

Array
(
    [output] => Array
        (
            [0] => Zugriff verweigert // translates to *Access denied*
        )

    [code] => 1
)

如果我 运行 命令行中的命令有效。我还尝试将 运行as /user:IUSR 与命令一起使用,但它会导致输入 IUSR 密码的请求,我不知道如何获取它。

它是 PHP IIS 10.0 上的 7.4,以防相关。

对于此处缺少权限的任何建议,我非常感谢。

编辑 (2021-10-26):

我现在尝试的其他事情是停用 UAC,从任务文件夹中删除写保护并停用防火墙。但它仍然说 'Access denied'.

最终我可以在一些帮助下找到丢失的权限。 IUSR 缺少对 C:\Windows\ SysWOW64 \schtasks.exe 的访问权限,但我尝试授予它对 C:\Windows\ 的访问权限System32\schtasks.exe之前。因此,在为 C:\Windows\SysWOW64\schtasks.exe 授予 IUSR 读取和执行权限后,一切都按预期工作。