如何使用WScript.Shell对象调试ASP权限问题?

时间:2009-05-22 10:47:57

标签: security asp-classic vbscript iis-6 permissions

我必须从一些传统的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命令,但我想排除问题的其他原因。

更新:我尝试了大多数事情,但是没有任何帮助。也许我可以稍微改变一下问题。 如何调试此问题?

1 个答案:

答案 0 :(得分:5)

ASP通常被拒绝访问任何有潜在危险的内容,例如cmd.exe。检查cmd.exe上的文件权限,看看是否适合你(我想是的)。

如果确实必须使用cmd.exe来执行页面处理的一部分,请更改cmd.exe的文件权限(不推荐用于面向Internet的Web服务器),或确保ASP页面运行未被拒绝访问该文件的凭据。

要实现此目的,请使用IIS管理控制台删除对ASP页面的“匿名访问”,并使用Windows集成的身份验证(如果可行),或者保持“匿名访问”并输入一组固定的凭据,用来代替默认的“IUSR _...”。

或者,如果您只是使用cmd.exe来启动向STDOUT输出内容的程序,则可以尝试直接启动该程序,而不将其包装在cmd.exe调用中。同样,ASP页面运行的用户需要访问该程序的可执行文件。