Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Вниз

Как улучшить поиск в LDAP? Есть такая конструкция, которая   Найти похожие ветки 

 
EgorovAlex ©   (2006-03-22 10:58) [0]

сначала возвращает путь пользователя, а потом по этому пути получает самого пользователя:

Connection := CreateOleObject("ADODB.Connection");
Command := CreateOleObject("ADODB.Command");
try
 Connection.Provider := "ADsDSOObject";
 Connection.Open("Active Directory Provider");
 Command.ActiveConnection := Connection;
 Command.Properties("Page Size") := 1000;
 Command.Properties("Searchscope") := ADS_SCOPE_SUBTREE;
 Command.CommandText := "SELECT distinguishedName FROM ""LDAP://" + UserDomain + """ WHERE objectCategory=""group"" AND sAMAccountName=""" + GrpName + """";
 try
   Res := Command.Execute;
   if not Res.EOF then
     AdsPath := Res.Fields[0].Value;
 except
 end;
 Res := NULL;
finally
 Command := NULL;
 Connection.Close;
 Connection := NULL;
end;
ADsGetObject(PWideChar("LDAP://" + AdsPath), IADsGroup, Group);

Так вот вопрос: как мне сразу после поиска в Res получить группу, а не путь для неё? Т.к. в данном случае делается лишний вызов ADsGetObject.
На vbs скрипте видел, что такое возможно.


 
Alex Konshin ©   (2006-03-22 11:56) [1]

Занятно... А я и не знал, что оно и SQL синтаксис поддерживает.
Насколько я понял тебе нужно выбрать объекты, у которых objectClass=person и memberOf=<DN_нужной_группы>. Сам думай, как оно в твоем случае будет выглядеть.
Сходи любым LDAP броузером на свой домен контролер, все становится понятно.
Единственная хитрость - узнать свой собственный DN чтобы приконнектится. Например, у меня дома CN=Alex Konshin,CN=Users,DC=home
Для меня откровением было, что в первом токене нужно не логин указывать, а полное имя.


 
EgorovAlex ©   (2006-03-22 13:02) [2]

Нет, мне не пользователи нужны, а нужно мне интерфейс группы из домена получить по её имени. Я не знаю как запрос построить и как потом результат в Group: IADsGroup загнать.


 
EgorovAlex ©   (2006-03-22 15:20) [3]

Ещё нашёл описание для интерфейса IADsNameTranslate - для получения LDAP пути. Но не могу на делфи это переделать:

" Determine DNS domain name from RootDSE object.
Set objRootDSE = G("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")

" Use the NameTranslate object to find the NetBIS domain name from the
" DNS domain name.
Set objTrans = C("NameTranslate")
objTrans.Init 3, strDNSDomain
objTrans.Set 1, strDNSDomain
strNetBISDomain = objTrans.Get(3)
" Remove trailing backslash.
strNetBISDomain = Left(strNetBISDomain, Len(strNetBISDomain) - 1)

" Use the NameTranslate object to convert the NT user name to the
" Distinguished Name required for the LDAP provider.
objTrans.Init 1, strNetBISDomain
objTrans.Set 3, strNetBISDomain & "\" & strNTName
strUserDN = objTrans.Get(1)

" Bind to the user object in Active Directory with the LDAP provider.
Set objUser = G("LDAP://" & strUserDN)



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.049 c
15-1148622507
worldmen
2006-05-26 09:48
2006.06.18
WinXp Pro. Доступ к принтерам по сети.


1-1147094322
Sphinx
2006-05-08 17:18
2006.06.18
Как получить интерфейс класса ?


15-1148538041
begin...end
2006-05-25 10:20
2006.06.18
Сотовый...


2-1148801732
Хочу_все_знать
2006-05-28 11:35
2006.06.18
Вопрос к Мастерам !


2-1149089430
AlexanderMS
2006-05-31 19:30
2006.06.18
Узнать процедуры в DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский