无权运行 CDONTS 应用程序
问:我试图在我的站点上使用以下脚本。
(http://www.microsoft.com/technet/community/columns/insider/iisi1201.mspx (英文))
<%
Dim objMail
Set objMail = Server.CreateObject("CDONTS.NewMail")
objMail.From = "yourname@youremail.com"
objMail.Subject = "A Sample mail sent with CDONTS"
objMail.To = "someone@somwhere.com"
objMail.Body = "Here is the message."
objMail.Send
set objMail = nothing
%>
但是我的服务器生成如下错误代码:
Microsoft VBScript 运行时错误“800a0046"- 权限被拒绝。
答:CDONTS 设计为在 Windows NT 4.0 上,使用 IIS 4.0 以进程内组件的形式运行。当应用程序在进程外运行时,它使用 IWAM_<计算机名> 帐户,运行在 MTS.EXE(IIS 4.0)或是 DLLHOST.EXE(IIS5)进程中。当在进程外运行应用程序时,IWAM 帐户可能需要访问文件和系统资源。对于这样的 CDONTS 对象,IWAM 帐户需要访问系统的机器密钥(参见 Microsoft 知识库文章 318478 (英文))以及 Inteinfo\Mailroot 文件夹中的某些文件夹(参见 Microsoft 知识库文章 260985 (英文))。
有了这些信息后,可能还需要做一些其他操作。首先,作为一种策略,您应该重新编写应用程序的代码,改为使用 CDOSYS 对象(请参见 2001 年 12 月份的 IIS 专栏 (英文))。这将确保它在今后也受支持,因为 Windows 2000 或 Windows Server 2003 上不会安装 DOSYS 对象。这也许能,但也许不能解决您的问题。其次,如果 CDONTS 应用程序在进程中而不是进程外运行,那么您几乎可以确定问题与 IWAM 用户帐户权限有关。由于安全方面的考虑,也许无法或是不希望在进程中运行 CDONTS 应用程序,但是这样可以避免与 IWAM 帐户相关的权限问题。确认 Mailroot 和机器密钥拥有适当的权限。再其次,如果启动 ASP 脚本的用户对 Mailroot\Pickup 文件夹没有适当的权限,那么也可能会出现这样的错误消息。默认情况下,MailRoot 文件夹的权限被设置为 Everyone – 完全控制,但这个权限过高。因此,我建议将已通过身份验证的用户对此文件夹的权限设置为读取/写入,而 System 和 Administrators 则设置为“完全控制"。这将允许 IUSR 和 IWAM 用户以及其他用户帐户可以将邮件写入 SMTP 文件夹。您还应该将 IUSR_<计算机名> 对这些文件夹的权限设置为拒绝执行。如果已经运行了 IIS Lockdown 工具 (英文),那么可以使用 Web Anonymous Users 本地组来实现这一点。不要拒绝 Web Applications 组的写入 权限。
from:asp学习网/title:无权运行 CDONTS 应用程序/ time:2006-11-22 21:00:13本文主题无权运行 CDONTS 应用程序