2

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 で小さなテスト アプリを 5 分で作成できました。そのアプリを使用すると、(匿名で) 接続して LDAP ストアから結果を読み取ることができましたが、まったく問題ありませんでした。

LDAP と VB6 の組み合わせの経験があり、何が問題なのか知っている人はいますか? 私はググっていくつかのサンプルコードスニペットを見ましたが、残念ながらどれも機能しませんでした (結果として同じエラーメッセージが表示されます)。前もって感謝します!

4

2 に答える 2

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")
于 2008-09-22T13:16:01.343 に答える