2010-10-07 84 views
0

假設我有一個簡單的控制檯程序來獲取文件夾名稱的文件列表。我想在運行於獨特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()的結果甚至不太有希望。

回答

0

你能用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