【问题标题】:VBScript Error when calling GetObject("WinNT://JohnDoe,User")调用 GetObject("WinNT://JohnDoe,User") 时出现 VBScript 错误
【发布时间】:2010-02-08 15:26:33
【问题描述】:

我有一年多没有接触过的代码,但是 DC 从 2008 升级到 2008 R2。 AD 人员声称这不是 DC 升级,但问题在升级后立即开始。

Microsoft VBScript 运行时错误“800a0046”
权限被拒绝:'GetObject'

在 Set Group 线路上失败。

Set Group = GetObject("WinNT://" & Logon_name & ",User")

For each Member in Group.Groups
  If Member.Class = "Group" then
    If Member.Name = "TEST_AD_GROUP" Or Member.Name = "TEST_AD_GROUP2" then
      x = "true"
      Exit For
    End If
  End If
Next

谢谢。

【问题讨论】:

  • 脚本在哪个用户帐户上下文中执行?也许它在域级别被锁定(但缓存在它执行的机器上)?
  • 它应该作为 COMPUTER 帐户运行。
  • “应该”?你可以检查吗?很有可能它确实是一条真正的“拒绝访问”消息。
  • 在电脑账号下运行。

标签: vbscript active-directory activex adsi


【解决方案1】:

我不得不更改代码以传递用户 ID 和密码。

Set objIADS = GetObject("WinNT:").OpenDSObject("WinNT://" & strDomain, strUsername, strPassword, ADS_SECURE_AUTHENTICATION)
Set objIADSUser = objIADS.GetObject("user", strUsername)

For each Member in objIADSUser.Groups
    If Member.Class = "Group" then
        If Member.Name = "TEST_AD_GROUP" then
            x = "true"
            EXIT FOR
        End If
    End If
Next

【讨论】:

    猜你喜欢
    • 2020-12-11
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多