我遇到了Visual Basic(6)与LDAP结合的问题。当我尝试连接到LDAP存储时,我总是会收到“错误路径名”或“表不存在”等错误(取决于代码的样子)。
这是我写的连接代码的一部分:
path = "LDAP://xx.xxx.xxx.xxx:xxx/"
Logging.WriteToLogFile "Test1", logINFO
Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADsDSOObject"
conn.Properties("User ID") = "USER_ID"
conn.Properties("Password") = "PASSWORD"
conn.Properties("Encrypt Password") = True
conn.Properties("ADSI Flag") = 34
Logging.WriteToLogFile "Test2", logINFO
conn.Open "Active Directory Provider"
Logging.WriteToLogFile "Test3", logINFO
Set rs = conn.Execute("<" & path & "ou=Some,ou=Kindof,o=Searchbase>;(objectclass=*);name;subtree")
Logging.WriteToLogFile "Test4", logINFO
日志文件显示“Test1”,“Test2”,“Test3”,然后“表不存在”,所以它是“Set rs = conn.Execute(...)”这一行出错的地方(很明显......)
在我的代码中,我尝试以安全的方式连接。我发现它与SSL /证书无关,因为它也无法建立匿名的不安全连接。有趣的是:我在五分钟内在.NET中编写了一个小测试应用程序。使用该应用程序,我能够(匿名)连接并从LDAP存储中读取结果,完全没有问题。
有没有人对组合LDAP和VB6有任何经验,也许知道可能是什么问题?我用谷歌搜索并看到一些示例代码片段,但不幸的是它们都没有工作(结果相同的错误消息)。提前谢谢!
答案 0 :(得分:3)
我不确定这会有多大帮助,但我使用此代码访问Active Directory对象。
Set oinfo = New ADSystemInfo
sDomain = Split(oinfo.DomainDNSName, ".")
'-- Get Datasets from the Active Directory
'-- Connect to Active Directory in logged in domain
con.Open "Provider=ADsDSOObject;Encrypt Password=False;Integrated Security=SSPI;Data Source=ADSDSOObject;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648"
'-- Query all serviceConnectionPoints in the Active Directory
'-- that contain the keyword "urn://tavis.net/TM/Database"
'-- and return the full path to the object
Set rst = con.Execute("<LDAP://DC=" & sDomain(0) & ",DC=" & sDomain(1) & ">;(&(objectCategory=serviceConnectionPoint)(keywords=urn://tavis.net/TM/Database));Name, AdsPath;subTree")
答案 1 :(得分:1)
2件事:
Open()
方法调用需要其他参数,服务器/用户名/密码您传递给Execute()
的LDAP查询应为:
"<" & path & "ou=Some/ou=Kindof/o=Searchbase>;(objectclass=*);name;subtree"