【问题标题】:Microsoft VBScript runtime error: Permission denied: 'CreateObject' when creating CDONTS.NEWMAILMicrosoft VBScript 运行时错误:权限被拒绝:创建 CDONTS.NEWMAIL 时出现“CreateObject”
【发布时间】:2014-05-18 02:11:18
【问题描述】:

我正在对一个用经典 asp 编写的网站进行更改。

我的系统是 Windows 7 64 位。

在将网站设置为在 IIS6 上运行的经典 asp 之后,我已经能够运行该网站。

当它尝试执行以下代码时,我收到权限被拒绝错误:

    from1 = "Kevin@company.com"

    to1 = "staff1@company.com"
    to2 = "staff2@company.net"
    to3 = "staff3@client.com"

    strTo = to1
    If Len(strTo) > 0 Then
        If Len(to2) > 0 Then
            strTo = strTo & ";" & to2
        End If
    Else
        strTo = to2
    End If

    If Len(strTo) > 0 Then
        If Len(to3) > 0 Then
            strTo = strTo & ";" & to3
        End If
    Else
        strTo = to3
    End If


    body = reqApprName & "<br />" & reqApprPhone & "<br />" & reqApprEmail & "<br />Loan Number: "_
        & loannum & "<br /><br />Please do not reply back to this email.  The Vendor has provided the following "_
        & "comment associated with this order.<br /><br />" & reqUndueInfluenceComment

    Set ObjMail = CreateObject("CDONTS.Newmail")
    ObjMail.From = from1
ObjMail.To = strTo
ObjMail.Subject = "Appraisal Order "&OrderNum&" by Vendor"
    ObjMail.BodyFormat = 0
    ObjMail.MailFormat = 0
    ObjMail.Body = body
ObjMail.Send
Set ObjMail = Nothing

我很困惑,因为我以前从未遇到过 CDONTS 的问题。再说一次,我从未尝试在 Windows 7 64 位机器上使用它,使用 32 位经典 asp。

有人有什么想法吗?

谢谢大家。

PS:我在为 CDONTS.NewMail 创建对象时遇到错误

【问题讨论】:

  • 你的机器上真的安装了 cdonts,它很古老吗? cdosys 已成为至少 3 个 IIS 版本的默认组件w3schools.com/asp/asp_send_email.asp
  • 我必须安装它。我在发布我的问题之前就这样做了。谢谢。

标签: vbscript asp-classic permission-denied


【解决方案1】:

当您尝试发送消息时,您可能会收到以下错误消息:

Microsoft VBScript runtime error '800a0046' Permission denied

当应用程序在 IIS 中的进程外运行时会出现此问题。

发生此问题时,进程的用户上下文从有权访问 IIS 元数据库的 IUSR_MachineName 帐户更改为无权访问 IIS 元数据库的 IWAM_MachineName 帐户。

通常,此错误有两个原因。

  • 原因1

运行 .asp 页面或运行脚本的用户没有 Pickup 目录的权限。

通常,拾取目录位于以下位置:

对于仅运行 IIS 的计算机: C:\Inetpub\Mailroot\Pickup

对于运行 Microsoft Exchange 5.5 的计算机: Exchsrvr\Mailroot\Pickup

对于运行 Exchange 2000 的计算机: \程序文件\Exchsrvr\Mailroot\Vsi #\Pickup

解决方案

The user under whom the .asp page is running or the script is running must have Modify (Change) permission to the Pickup directory so that the NewMail object can create the .eml file.

  • 原因2

页面在其自己的内存空间中运行,并且被拒绝访问 IIS 元数据库。要验证这一点,请按照以下步骤操作:

单击开始,单击运行,键入 Inetmgr,然后单击确定。

右键单击根目录或包含您的页面的虚拟目录,然后单击“属性”。

如果您在第 2 步中右键单击根目录,请单击主目录选项卡。

如果您在步骤 2 中右键单击虚拟目录,请单击“虚拟目录”选项卡。

在运行 Windows NT 的计算机上,确定是否选中了在单独的内存空间中运行复选框。

如果选中了在单独的内存空间中运行复选框,请单击以清除该复选框。或者,在 SMTP 服务的“属性”菜单上,单击“操作员”选项卡,然后添加 IWAM_MachineName 帐户。

在运行 Windows 2000 的计算机上,确定应用程序保护设置是否设置为高(隔离)。如果应用程序保护设置设置为高(隔离),请将应用程序保护设置设置为中(池化)。或者,在 SMTP 服务的“属性”菜单上,单击“安全”选项卡,然后将 IWAM_MachineName 帐户添加到 Operators 帐户。

Support.Microsoft.com

【讨论】:

  • 非常感谢!晚上剩下的时间我要去开会,但我明天一进去就试试。
  • 我终于出院了(建议不要被车撞到),有机会试试这个。效果很好。非常感谢!
猜你喜欢
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
相关资源
最近更新 更多