在 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 读取和执行权限后,一切都按预期工作。
我正在尝试 运行 使用 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 读取和执行权限后,一切都按预期工作。