【问题标题】:How do I assign limited console program access to IIS 6?如何为 IIS 6 分配有限的控制台程序访问权限?
【发布时间】:2010-10-07 23:41:54
【问题描述】:

假设我有一个简单的控制台程序来获取给定文件夹名称的文件列表。我想在一个运行在唯一 Windows 用户帐户(即不是默认 Web 用户帐户)上的站点上使用 PHP 代码调用控制台程序。有没有一种方法可以允许 Windows 帐户访问控制台程序,而无需全面访问 cmd.exe?我在 Windows 2003 Server 上使用 IIS 6。

更新:

这是我尝试使用 popen() 的一些代码

$reg_cmd = '"C:\WINDOWS\system32\notepad.exe"' ;
$error = '';
$handle = popen($reg_cmd, 'r');

if (!$handle){
    $last_error = error_get_last();
    $error = $last_error['message'];
}
else{
    while (!feof($handle)) {
        $result .= fread($handle, 2096);
    }
}
pclose($handle);

$error 最终包含:

popen("C:\WINDOWS\system32\notepad.exe",r) [function.popen]: 结果太大

popen("C:\WINDOWS\system32\notepad.exe",r) [function.popen]: 没有那个文件或目录

我不知道为什么错误消息不一致。使用 proc_open() 的结果更没有希望。

【问题讨论】:

    标签: iis-6


    【解决方案1】:

    你能用proc_open()代替exec()吗?

    从版本 5.2.1 开始,proc_open() 不再要求您授予对 cmd.exe 的访问权限。

    【讨论】:

    • 我已经用一些代码更新了这个问题。 proc_open() 也没有生成句柄,因此无法访问 stdout 和 stderr 对象。顺便说一句,如果我授予 cmd.exe 权限(这是我要避免的),代码可以正常工作
    猜你喜欢
    • 2017-11-16
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2019-06-12
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多