我必须从一些旧的 ASP 应用程序运行命令行操作。
这是我的代码:
<%
cmd = "%comspec% /c echo Hello"
set wsh = CreateObject("WScript.Shell")
ireturn = wsh.Run(cmd, 0, true)
set wsh = nothing
%>
这是我收到的结果:
Microsoft VBScript runtime error '800a0046'
Permission denied
/test.asp, line 6
您知道如何使 IIS6 运行此代码吗?
注意:当然我不必运行 echo 命令,但我想排除问题的任何其他原因。
更新:我尝试了 tomalaks 提到的大多数事情,但没有任何帮助。也许我可以稍微改变一下问题。 我该如何调试这个问题?
最佳答案
ASP 通常被拒绝访问任何有潜在危险的东西,例如 cmd.exe。检查 cmd.exe 上的文件权限,看看这是否适合您(我想是的)。
如果您确实必须使用 cmd.exe 来执行部分页面处理,请更改 cmd.exe 上的文件权限(不推荐用于面向 Internet 的 Web 服务器),或者确保 ASP 页面运行未拒绝的凭据访问该文件。
要实现这一点,请使用 IIS 管理控制台删除对 ASP 页面的“匿名访问”并改用 Windows 集成身份验证(如果可行),或保留“匿名访问”并输入一组固定的应使用的凭据默认的“IUSR_...”。
或者,如果您仅使用 cmd.exe 来启动向 STDOUT 输出某些内容的程序,则可以尝试直接启动该程序,而无需将其包装在 cmd.exe 调用中。同样,运行 ASP 页的用户需要访问该程序的可执行文件。
关于security - 如何使用 WScript.Shell 对象调试 ASP 权限问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/897293/