尝试绑定到 AD 用户对象时出现错误 2147463168

2024-05-19

我正在 Windows 2012(不是 R2 并且无法升级)AD 环境上工作。当我使用管理员(非管理员)帐户从 vbscript 运行以下代码时,它运行完美。然而,当我以普通用户运行它时,我得到一个 -2147463168 ,这似乎是一个绑定错误。

On error Resume next
UsuariosLDAP = "LDAP://" & objSysInfo.UserNameSet
ObjUser = GetObject(UsuariosLDAP)
If err.number <> 0 then
    strTipoError = "Error buscando objeto en LDAP " & CStr(Err.Number) & " Usuario:" &    objSysInfo.UserName
    shell.logevent 1, strTipoError 
    Wscript.Quit
end if    

由于它可以使用管理员帐户正确运行,因此我假设(寻找其他选项)这是一个权限问题。问题是,这是一个由所有用户执行的登录脚本,所以我对修改所有 AD 对象的权限有点谨慎,除非我真的必须这样做。另一件事是我之前已经做过几次类似的事情(用普通用户查询 UserObject)并且它总是正常工作。我不确定 2012 年发生了什么变化来打破这个局面。

提前谢谢很多


// MessageId: E_ADS_BAD_PATHNAME
//
// MessageText:
//
//  An invalid directory pathname was passed
//
#define E_ADS_BAD_PATHNAME               _HRESULT_TYPEDEF_(0x80005000L)

来自 ADSErr.h

解码错误

-2147220978样式数字是32位有符号整数,用计算器转换为十六进制。

Windows 错误(较小的数字)和 COM HResult(通常但有例外,以 8 开头,如 0x80040154)在 WinError.h 中定义,但 8007nnnn 除外,您可以在其中查找它包含的 Window 错误号。

一般来说,Windows 错误少于 65,535 (0xFFFF)。从 0x80000001 开始的错误是组件对象模型 (COM) HResults。从 0xc0000001 开始的错误是 NTStatus 结果。

NTStatus 错误(通常但并不总是以 C 开头,如 0xC0000022)在 NTStatus.h 中定义。

.h 文件是最好的源,因为它包含错误的符号名称,可以提供错误来源等线索。 FormatMessage 不给出符号名称,只给出描述。

您可以通过下载 Platform SDK 来获取这些文件(大小为 GB)

如果您只想要这两个文件,我会将它们放在我的网盘上,这样我就可以在任何地方引用它们。https://skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121 https://skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121

请注意,互联网错误 (12,000 - 12,999) 是 Windows 错误,但在上面的 wininet.h 中指定。

其他 .h 文件中定义有错误。但99%都是以上三者。

HResults 和 NTStatus 代码的结构

HResults 中的最高有效位和 NTStatus 中的两个最高有效位设置为错误。因此,Hresults 在出错时启动 8,NTStatus 在出错时启动 C。接下来的 14 或 15 位被保留,有些指定设施 - 错误位于哪个区域。这是读取十六进制时的第三个和第四个数字。 EG 0xnn07nnnn - HResult 工具代码 7 是正常的 Windows 错误(从 COM 程序返回 - 因此它作为 HResult 返回)。设施代码在 Winerror.h 中定义为 HResults,在 NTStatus.h 中定义为 NTStatus 代码。他们是不同的。

解码 0x8003nnnn 错误

设施代码为 3 的 HResult 表示 HResult 包含 OLE 结构化存储错误(0x0 到 0xff)。这些与 Dos 错误代码相同。这些似乎不在 Windows 的头文件中,代码列表位于本文末尾。

解码 0x8004nnnn 错误

设施代码为 4 的 HResult 表示 HResult 包含 OLE 错误(0x0 到 0x1ff),而范围的其余部分(0x200 开始)是组件特定错误,因此一个组件中的 20e 与另一组件中的 20e 具有不同的含义。

这就是为什么错误源对于 0x80040200 以上的错误尤为重要。

解码 0x8007nnnn 错误

设施代码为 7 的 HResult 表示 HResult 包含 Windows 错误代码。您必须查找 Windows 的错误代码而不是 HResult。

解码0x80070002。 0x 表示它是一个十六进制数字,8 表示错误,前 7 表示它是 Windows 错误,其余数字 2 是实际的 Windows 错误。

要查找错误,我们需要十进制格式的错误。启动计算器(开始 - 所有程序 - 附件 - 计算器)并选择“查看”菜单 - “科学”,然后选择“查看”菜单 - 十六进制。输入 2。然后查看菜单 - 十进制。它会说2。

启动命令提示符(开始 - 所有程序 - 附件 - 命令提示符)并键入

net helpmsg 2

它会说

The system cannot find the file specified.

或者在 winerror.h 中查找

//
// MessageId: ERROR_FILE_NOT_FOUND
//
// MessageText:
//
// The system cannot find the file specified.
//
#define ERROR_FILE_NOT_FOUND             2L

解码 0x8019nnnn 错误

带有设施 0x19 的 HResult 是 HTTP 错误。 16,384 (0x4000) 以下的代码与 HTTP 错误相同,例如 HTTP 状态 404:服务器上不存在请求的 URL 为 0x80190194 (0x194 = 404)。代码 16,384 及更高版本是 BITS 特定的。

Dos 错误代码(0x8003nnnn 错误)

Code Message 
01 Invalid function number 
02 File not found 
03 Path not found 
04 Too many open files (no handles left) 
05 Access denied 
06 Invalid handle 
07 Memory control blocks destroyed 
08 Insufficient memory 
09 Invalid memory block address 
0A Invalid environment 
0B Invalid format 
0C Invalid access mode (open mode is invalid) 
0D Invalid data 
0E Reserved 
0F Invalid drive specified 
10 Attempt to remove current directory 
11 Not same device 
12 No more files 
13 Attempt to write on a write-protected diskette 
14 Unknown unit 
15 Drive not ready 
16 Unknown command 
17 CRC error 
18 Bad request structure length 
19 Seek error 
1A Unknown media type 
1B Sector not found 
1C Printer out of paper 
1D Write fault 
1E Read fault 
1F General failure 
20 Sharing violation 
21 Lock violation 
22 Invalid disk change 
23 FCB unavailable 
24 Sharing buffer overflow 
25 Reserved 
26 Unable to complete file operation (DOS 4.x) 
27-31 Reserved 
32 Network request not supported 
33 Remote computer not listening 
34 Duplicate name on network 
35 Network name not found 
36 Network busy 
37 Network device no longer exists 
38 NetBIOS command limit exceeded 
39 Network adapter error 
3A Incorrect network response 
3B Unexpected network error 
3C Incompatible remote adapter 
3D Print queue full 
3E No space for print file 
3F Print file deleted 
40 Network name deleted 
41 Access denied 
42 Network device type incorrect 
43 Network name not found 
44 Network name limit exceeded 
45 NetBIOS session limit exceeded 
46 Temporarily paused 
47 Network request not accepted 
48 Print or disk redirection is paused 
49-4F Reserved 
50 File already exists 
51 Reserved 
52 Cannot make directory entry 
53 Fail on INT 24 
54 Too many redirections 
55 Duplicate redirection 
56 Invalid password 
57 Invalid parameter 
58 Network device fault 
59 Function not supported by network (DOS 4.x) 
5A Required system component not installed (DOS 4.x) 

设施代码

NTStatus Facilities  HResults Facilities  
Common status values 0x0 Null 0x0 
Debugger 0x1 Rpc 0x1 
Rpc_runtime 0x2 Dispatch 0x2 
Rpc_stubs 0x3 Storage 0x3 
Io_error_code 0x4 Itf 0x4 
Various drivers 0x5-0xf Win32 0x7 
Ntwin32 0x7 Windows 0x8 
Ntsspi 0x9 Sspi 0x9 
Terminal_server 0xa Security 0x9 
Faciltiy_mui_error_code 0xb Control 0xa 
Usb_error_code 0x10 Cert 0xb 
Hid_error_code 0x11 Internet 0xc 
Firewire_error_code 0x12 Mediaserver 0xd 
Cluster_error_code 0x13 Msmq 0xe 
Acpi_error_code 0x14 Setupapi 0xf 
Sxs_error_code 0x15 Scard 0x10 
Transaction 0x19 Complus 0x11 
Commonlog 0x1a Aaf 0x12 
Video 0x1b Urt 0x13 
Filter_manager 0x1c Acs 0x14 
Monitor 0x1d Dplay 0x15 
Graphics_kernel 0x1e Umi 0x16 
Driver_framework 0x20 Sxs 0x17 
Fve_error_code 0x21 Windows_ce 0x18 
Fwp_error_code 0x22 Http 0x19 
Ndis_error_code 0x23 Usermode_commonlog 0x1a 
Hypervisor 0x35 Usermode_filter_manager 0x1f 
Ipsec 0x36 Backgroundcopy 0x20 
Maximum_value 0x37 Configuration 0x21 
  State_management 0x22 
  Metadirectory 0x23 
  Windowsupdate 0x24 
  Directoryservice 0x25 
  Graphics 0x26 
  Shell 0x27 
  Tpm_services 0x28 
  Tpm_software 0x29 
  Pla 0x30 
  Fve 0x31 
  Fwp 0x32 
  Winrm 0x33 
  Ndis 0x34 
  Usermode_hypervisor 0x35 
  Cmi 0x36 
  Windows_defender 0x50 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试绑定到 AD 用户对象时出现错误 2147463168 的相关文章

  • 使用 ASP 将参数传递给存储过程

    我正在尝试将一些参数传递给经典 ASP 中的 SQL 存储过程 我看过几篇关于此的帖子 不确定我做错了什么 因为我似乎没有看到我的差异 set conn CreateObject ADODB Connection conn open DSN
  • 使用 cscript.exe 而不是 wscript.exe 在 VBScript 中执行文件

    我知道如何使用 wscript exe 执行 exe 如下所示 Set WshShell WScript CreateObject WScript Shell WshShell Run c myprogram exe 但我被迫使用 cscr
  • 通过 Active Directory 搜索进行有效分页

    在 NET 中使用 Active Directory 搜索进行分页的有效方法是什么 在 AD 中进行搜索的方法有很多 但到目前为止我找不到如何有效地进行搜索 我希望能够表明Skip and Take参数并能够检索结果中与我的搜索条件匹配的记
  • 根据 Active Directory 策略检查密码[重复]

    这个问题在这里已经有答案了 我有一个允许用户更改其 AD 密码的前端 有没有办法获取特定用户及其属性 长度 复杂性 的密码策略 例如细粒度 有没有办法根据此特定策略检查字符串 xyz121 编辑 我不想检查活动目录中存储的当前密码 我想检查
  • VBScript 从 Shell 获取结果

    Set wshShell WScript CreateObject WSCript shell wshshell run runas 如何获取结果并显示在 MsgBox 中 您将需要使用 WshShell 对象的 Exec 方法而不是 Ru
  • AuthenticablePrincipal.RefreshExpiredPassword() 的作用是什么?

    我正在寻找可以使用此功能的示例场景 MSDN 文档不存在 理论上 它似乎将用户密码的年龄重置为零 如果出于某种原因您有一个策略要求在一定时间间隔后更改密码 那么您会使用它 但在某些情况下 也许是某些用户 您想让他们保留密码更长时间
  • 从 php 对 Active Directory/ISA 进行身份验证 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个复杂的问题 而且由于我真的不知道从哪里开始而加剧 在过去的几年里 我开发了许多基于 php Web 的系统 当我构建它们时 我
  • Powershell:根据属性过滤属性

    我对 PowerShell 的自学经验有限 所以这可能是一些基本的东西 但我似乎无法正确理解 我在 Active Directory 中 需要提取电子邮件地址不以 SamAccountName 开头的用户列表 因此 如果您的登录名是 jdo
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 如何修复此“输入超出文件末尾”错误? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须找到包含以下内容的所有步骤PGM FTP然后阅读所有行 直到找到另一个没有的步骤PGM FTP 它可以是任何东西 除了FTP 我需要
  • 从 C# 访问 AD 时出现“从服务器返回引用”异常

    DirectoryEntry oDE new DirectoryEntry LDAP DC Test1 DC Test2 DC gov DC lk using DirectorySearcher ds new DirectorySearch
  • 使用用户身份验证的 SQL 数据库与 Active Directory 的连接字符串

    我正在连接到 Azure 服务器上的数据库 其中数据库位于不同的服务器上 并且通过选择选项 Active Directory 和用户凭据选项建立连接 它在 SQL Server 中工作 但我需要一个连接字符串来连接数据库 有什么建议如何去做
  • 如何将 2 数组放入配置(.ini)文件中? [复制]

    这个问题在这里已经有答案了 我有这个简单的 VBScript 基本代码 Dim cars cars Array Volvo Saab BMW Dim fruits fruits Array Apple Orange Banana Dim i
  • 导出到excel时如何显示前导零?

    我正在通过更改内容类型来创建 Excel 报告 Response ContentType application vnd ms excel 我有包含前导零的值 问题是导出到 Excel 时缺少前导零 e g 000123 gt 123 我知
  • LDAP 组成员身份(包括域用户)

    如何获取 LDAP 组中的用户列表 即使该组恰好是某些用户的主要组 例如 假设 域用户 在德语中是 Domain Leute 我想要 CN Domain Leute DC mycompany DC com 的所有成员 我怎么知道这是众所周知
  • 比较数组中的文件、从文本文件中删除行、函数、日志记录

    所以我创建了这两个数组 Approved Shares 和 Current Shares Reads Approvedshare txt and makes the txt file into an array public objFSO
  • 使用 VBScript 在日期字段值上选择错误的数据

    我有一张包含以下数据的表 现在 Excel 共有 36 个任务 每个任务有 4 列 第一个任务 即 Task1 名称将始终从 L 列开始 144 列描述了 36 个任务 现在我们需要按行进行检查 并需要检查 TNStart 开始日期 你们能
  • Node.Js - 获取 Windows 用户名

    我正在尝试获取运行我的node jS应用程序的计算机的Windows用户名 该应用程序始终在Windows计算机上运行 如何使用 Node Js 获取当前的 Windows 用户名 我想找到类似的东西WindowsIdentity GetC

随机推荐