1

这是我的程序。我无法绑定。我不知道是什么问题。我认为连接字符串有问题。如何找到 LDAP 连接字符串?

    #include <iostream>
    #include <conio.h>
    #include <wchar.h>
    #include <objbase.h>
    #include <activeds.h>
    #include <AdsHlp.h>

    using namespace std;
    const IID IID_IADs = {0xFD8256D0, 0xFD15, 0x11CE, {0xAB,0xC4,0x02,0x60,0x8C,0x9E,0x75,0x53}};
    int main(int argc, CHAR* argv[])
    {
    IADs *pObject;
    HRESULT hr;
    ::CoInitialize(NULL);
            hr = ADsOpenObject(L"ldap://server1",L"cn=Manager,dc=maxcrc,dc=com",L"secret",
                ADS_SECURE_AUTHENTICATION, 
                IID_IADs,
                (void**)&pObject);

    if(SUCCEEDED(hr))
    {
    cout<<"Success";
    pObject->Release();
    }
    else
    cout<<"Unsuccessful";

    CoUninitialize();
    getch();
    return 0;
    }
4

2 回答 2

0

我不确定 C 中的连接字符串是否会像 C++ 中一样,但对于 C++,我们必须在连接字符串中设置用户名和密码,如下所示:

hr = ADsOpenObject(L"LDAP://CN=Manager,DC=maxcrc,DC=com",
                   "username",
                   "password",
                   ADS_SECURE_AUTHENTICATION, 
                   IID_IADs,
                   (void**) &pObject);
于 2013-11-09T07:23:42.257 回答
0

我从不使用“C”中的 ADSI COM 对象,但是当我从 PowerShell 中使用它时,如果我在连接 URL 中不使用大写字母作为“LDAP”,则会遇到错误(PowerShell 不区分大小写)。查看LDAP ADsPath,所有 URL 都以大写字母“LDAP”开头。

于 2013-11-09T06:36:16.083 回答