无权运行 CDONTS 应用程序
无权运行 CDONTS 应用程序 无权运行 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 组的写入 权限。
返回页首
安装 IIS 5.0 后服务器运行失败
问:在 IIS 5.0 上,我们希望在应用程序的默认保护设置下——中(共用)——运行应用程序。如此配置后,我们收到以下错误消息:
错误代码 800800005 - 服务器运行失败。
我们尝试过卸载,然后重新安装 IIS,但是仍然出现此消息。我们应该如何解决这个问题呢?
答:这条消息通常表明 IIS 的设置或安装过程中存在不正确的操作。请查看 IIS5.log 文件(位于 %systemroot% 文件夹中,而该文件夹通常位于 \Winnt 下),并在其中搜索单词“FAIL'。这也许能发现问题所在。这条消息出现时,很可能会伴随着某些事件查看器消息,而这些消息可以提供非常有价值的信息。另外,值得尝试运行 Synciwam.vbs,这个文件默认情况下位于 \Inetpub\Adminscripts 文件夹中。最后,尝试一个众所周知的小技巧:打开“控制面板',然后单击“添加/删除 Windows 程序'。不要做任何更改,然后单击“确定'。这个操作将会使 Windows 2000 对 IIS 和 COM+ 对象执行某些验证测试。
2.如果出现以下情况:
System.Runtime.InteropServices.COMException: 服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for rav@now.net.cn
默认SMTP虚拟服务器--属性--访问 -- 中继--“加入127.0.0.1”;
就行了。