Vba “具有特殊字符的对象”/&引用;在GetObject中生成自动错误
我们有一个旧的Microsoft Access字体端,用作用户数据库的GUI。我从来都不是一个VBA的人,所以在修复bug的过程中,我一直在学习 我们的Access DB有许多将信息同步到Active Directory的命令。其中一个命令是将用户添加到组中。但是,每当组包含Vba “具有特殊字符的对象”/&引用;在GetObject中生成自动错误,vba,ms-access,active-directory,Vba,Ms Access,Active Directory,我们有一个旧的Microsoft Access字体端,用作用户数据库的GUI。我从来都不是一个VBA的人,所以在修复bug的过程中,我一直在学习 我们的Access DB有许多将信息同步到Active Directory的命令。其中一个命令是将用户添加到组中。但是,每当组包含/时,就不会添加该组 调试产生如下结果: 运行时错误-2147463168(80005000)“自动错误” 打印出targetgroup会按我的预期显示DN。在GetObject出现问题并导致其自身的身份验证错误之前,尝试转
/
时,就不会添加该组
调试产生如下结果:
运行时错误-2147463168(80005000)“自动错误”
打印出targetgroup会按我的预期显示DN。在GetObject出现问题并导致其自身的身份验证错误之前,尝试转义/
下面是函数的顶部-
Function AddGroup(TargetGroup, strUserID, Optional strOptReqBy)
Dim objDL
Set objUser = GetObject("LDAP://" & GetDName(CStr(strUserID)))
Set objDL = GetObject("LDAP://" & TargetGroup)
On Error Resume Next
objDL.Add (objUser.ADsPath)
objDL.SetInfo
On Error GoTo 0
如果组中不包含/
调试指向
Set objDL=GetObject(“LDAP://”和TargetGroup)
正在查找有关发生这种情况的原因的一些输入。谢谢!在LDAP路径中,
/
是一个分隔符。不仅在开头附近使用了/
,而且还可以指定要连接的服务器,后跟/
,然后是对象的DN,如下所示:
LDAP://example.com/DC=example,DC=com
如果您运行此操作的计算机未加入到与您连接到的域不同的域(或受信任的域),则这是必需的
因此,这意味着,如果要绑定到的对象的DN有一个/
,它会认为/
之前的所有内容都是要连接的服务器,并且会爆炸
因此,您只需要逃避它,正如您已经了解的,这是通过\
完成的:
LDAP://OU=This\/That,DC=example,DC=com
是的,一个简单的替换就可以了:
Set objUser=GetObject(“LDAP://”和Replace(GetDName(CStr(strUserID)),“/”,“\/”)
别难过。即使是微软。你是如何试图逃离
/
?@TimWilliams你知道,现在看着它,我想我完全是在放屁。我是在和Chr(34)一起逃跑基于我找到的其他东西。你的链接太棒了。明天我要试试这个,现在我要看看我是否能找到一个比使用REPLACE()更好的方法,在逃离目标群时能够更新我们的群添加和删除。谢谢我的兄弟!