如何将有限的控制台程序访问权限分配给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
。
让我去吧 – KalenGi 2010-10-08 15:08:58
我用一些代码更新了问题。 proc_open()没有生成句柄,因此stdout和stderr对象不可访问。顺便说一句,代码工作正常,如果我给cmd.exe的权利(这是我所避免的) – KalenGi 2010-10-08 19:46:07