如何将有限的控制台程序访问权限分配给IIS 6?

问题描述:

假设我有一个简单的控制台程序来获取文件夹名称的文件列表。我想在运行于独特Windows用户帐户(即不是默认Web用户帐户)的网站上使用PHP代码调用控制台程序。有没有一种方法可以让Windows帐户访问控制台程序,而无需一蹴而就访问cmd.exe?我正在使用Windows 2003 Server上的IIS 6。如何将有限的控制台程序访问权限分配给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); 

$错误结束含有尝试之一:

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

POPEN(" C:\ WINDOWS \ SYSTEM32 \ NOTEPAD.EXE ",R)[function.popen]:没有这样的文件或目录

我不知道为什么错误信息是不一致的。使用proc_open()的结果甚至不太有希望。

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

从版本5.2.1开始proc_open()不再需要您访问cmd.exe

+0

让我去吧 – KalenGi 2010-10-08 15:08:58

+0

我用一些代码更新了问题。 proc_open()没有生成句柄,因此stdout和stderr对象不可访问。顺便说一句,代码工作正常,如果我给cmd.exe的权利(这是我所避免的) – KalenGi 2010-10-08 19:46:07