如何使用VB6连接到LDAP存储

如何使用VB6连接到LDAP存储,vb6,ldap,Vb6,Ldap,我在使用Visual Basic(6)与LDAP结合时遇到了一个问题。当我尝试连接到LDAP存储时,总是会出现诸如“坏路径名”或“表不存在”之类的错误(取决于代码的外观) 这是我为连接而编写的代码的一部分: path = "LDAP://xx.xxx.xxx.xxx:xxx/" Logging.WriteToLogFile "Test1", logINFO Set conn = CreateObject("ADODB.Connection") conn.Provider = "ADsDSOOb

我在使用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
path=“LDAP://xx.xxx.xxx.xxx:xxx/”
Logging.WriteToLogFile“Test1”,logINFO
Set conn=CreateObject(“ADODB.Connection”)
连接提供程序=“ADsDSOObject”
连接属性(“用户ID”)=“用户ID”
连接属性(“密码”)=“密码”
conn.Properties(“加密密码”)=True
连接属性(“ADSI标志”)=34
Logging.WriteToLogFile“Test2”,logINFO
连接打开“Active Directory提供程序”
Logging.WriteToLogFile“Test3”,logINFO
设置rs=conn.Execute(“;(objectclass=*);名称;子树”)
Logging.WriteToLogFile“Test4”,logINFO
日志文件显示“Test1”、“Test2”、“Test3”和“Table not existence”,因此在“Set rs=conn.Execute(…)”行中出现了错误(非常明显…)

在我的代码中,我尝试以安全的方式连接。我发现它与SSL/证书无关,因为也不可能建立匿名的不安全连接。有趣的是:我在五分钟内在.NET中编写了一个小测试应用程序。有了这个应用程序,我可以连接(匿名)并从LDAP存储读取结果,一点问题也没有


有没有人有过LDAP和VB6组合的经验,可能知道会出现什么问题?我在谷歌上搜索并看到了一些示例代码片段,但不幸的是它们都不起作用(结果是相同的错误消息)。提前谢谢

我不确定这会有多大帮助,但我使用这段代码访问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")
Set oinfo=新的ADSystemInfo
sDomain=Split(oinfo.DomainDNSName,“.”)
“--从Active Directory获取数据集
“--连接到登录域中的Active Directory
con.Open“Provider=ADsDSOObject;Encrypt Password=False;Integrated Security=SSPI;Data Source=ADsDSOObject;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648”
“--查询Active Directory中的所有serviceConnectionPoints
“--包含关键字的”urn://tavis.net/TM/Database" 
“--并返回对象的完整路径
设置rst=con.Execute(&(objectCategory=serviceConnectionPoint)(关键字=urn://tavis.net/TM/Database));名称,AdsPath;子树)
2件事:

  • Open()
    方法调用需要额外的参数,服务器/用户名/密码
  • 传递给
    Execute()
    的LDAP查询应该是:

    "<" & path & "ou=Some/ou=Kindof/o=Searchbase>;(objectclass=*);name;subtree"
    
    ;(objectclass=*);名称;子树