我必须从一些传统的ASP应用程序运行命令行操作。
这是我的代码:
<%
cmd = "%comspec% /c echo Hello"
set wsh = CreateObject("WScript.Shell")
ireturn = wsh.Run(cmd, 0, true)
set wsh = nothing
%>
这是我收到的结果:
Microsoft VBScript运行时错误 '800A0046'
许可被拒绝
/test.asp,第6行
您是否知道如何让IIS6运行此代码?
注意:我当然不必运行echo命令,但我想排除问题的其他原因。
更新:我尝试了大多数事情,但是没有任何帮助。也许我可以稍微改变一下问题。 如何调试此问题?
答案 0 :(得分:5)
ASP通常被拒绝访问任何有潜在危险的内容,例如cmd.exe。检查cmd.exe上的文件权限,看看是否适合你(我想是的)。
如果确实必须使用cmd.exe来执行页面处理的一部分,请更改cmd.exe的文件权限(不推荐用于面向Internet的Web服务器),或确保ASP页面运行未被拒绝访问该文件的凭据。
要实现此目的,请使用IIS管理控制台删除对ASP页面的“匿名访问”,并使用Windows集成的身份验证(如果可行),或者保持“匿名访问”并输入一组固定的凭据,用来代替默认的“IUSR _...”。
或者,如果您只是使用cmd.exe来启动向STDOUT输出内容的程序,则可以尝试直接启动该程序,而不将其包装在cmd.exe调用中。同样,ASP页面运行的用户需要访问该程序的可执行文件。