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

Вниз

Как получить ВСЕ свойства пользователя из Active Directory?   Найти похожие ветки 

 
Валигози ©   (2009-10-30 14:55) [0]

Далее я опишу подробно все свои действия:
Сначала импортирую ActiveDs_TLB.pas: Project -> Import Type Library... -> Active DS Type Library (Version 1.0) -> Create unit

Потом в новом проекте:
1) Объявляю функцию: function ADsGetObject(PathName: WideString; const riid: TGUID; out ppObject): HRESULT; stdcall; external "activeds.dll";
2) Прописываю в uses ActiveDs_TLB и бросаю TButton и TMemo.
3) На событии кнопки OnClick пишу:
procedure TForm1.Button1Click(Sender: TObject);
var
 PropList: IADsPropertyList;
 PropEntry: IADsPropertyEntry;
 i, Count: Integer;
 AdsUser: IAdsUser;
begin
 ADsGetObject("WinNT://MyDomainName/MyUserName", IID_IADsUser, AdsUser); // здесь нужно прописать действительные имя домена и пользователя
 PropList:=AdsUser as IADsPropertyList;
 AdsUser.GetInfo;
 Count:=PropList.PropertyCount;

 Memo1.Lines.Clear;
 for i:=1 to Count do
 begin
   PropEntry:=IDispatch(PropList.Next) as IADsPropertyEntry;
   Memo1.Lines.Add(PropEntry.Name+#9+VarToStr(AdsUser.Get(PropEntry.Name)));
 end;
end;

Но при этом получаю почему то не все свойства. Отсутствуют например "TelephoneNumber", "OfficeLocations", "EmailAddress" и др., хотя эти поля заполнены (в чём можно убедиться если зайти в консоль Active Directory Users and Computers)
Если же попытаться получить значение этих свойств (например так: ShowMessage(AdsUser.Get("EmailAddress")) или так: ShowMessage(AdsUser.EmailAddress)), то получаю странное сообщение об ошибке: "Свойства службы каталогов не могут быть найдены в кэше."


 
Валигози ©   (2009-11-02 11:53) [1]

Странно, что нет ни одного ответа...
Здаётся мне, что эта ошибка из-за того, что просто у "WinNT" нет таких свойств и нужно использовать чтото другое, например ADsGetObject("LDAP://..., но у этого LDAP синтаксис жуткий - что я не подсовывал - не работает... :( Уже весь инет пролазил, перепробовал все возможные варианты параметров, никак не пойму в каком же виде ему нужно подсовывать имя домена (и другие параметры)... :(


 
Anatoly Podgoretsky ©   (2009-11-02 12:23) [2]

У "WinNT" нет АД и LDAP


 
Валигози ©   (2009-11-02 12:44) [3]


> Anatoly Podgoretsky ©   (02.11.09 12:23) [2]
> У "WinNT" нет АД и LDAP

Я имел ввиду провайдера. Тоесть, чтобы получить свойства которые не доступны через провайдера "WinNT" (который я вызываю так: ADsGetObject("WinNT://MyDomainName/MyUserName") нужно видимо обращаться к провайдеру "LDAP" так: ADsGetObject("LDAP://далее_жутко_непонятные_параметры/которые_у_меня_не_хотят_работать. Или иначе почему я не могу прочитать некоторые свойства, которые видно в консоли?
Как же получить параметры через "LDAP"? У меня даже не хочет работать объект "NameTranslate" который умеет переводить имена домена из формата "WinNT://" в формат "LDAP://"... :(
Блин засада... :(


 
clickmaker ©   (2009-11-02 12:54) [4]

LDAP://servername/CN=username,CN=users
как-то так


 
Валигози ©   (2009-11-02 13:03) [5]


> clickmaker ©   (02.11.09 12:54) [4]
> LDAP://servername/CN=username,CN=users
> как-то так

Вызываю: ADsGetObject("LDAP://S-HELIOS01/CN=ganitskiy-aa,CN=users", IID_IADsUser, AdsUser) получаю ошибку $8007203A...


 
clickmaker ©   (2009-11-02 14:02) [6]

http://www.google.ru/#hl=ru&newwindow=1&q=LDAP+0x8007203A&lr=&aq=f&oq=&fp=be4313e544833b95


 
Валигози ©   (2009-11-02 15:53) [7]


> clickmaker ©   (02.11.09 14:02) [6]
> http://www.google.ru/#hl=ru&newwindow=1&q=LDAP+0x8007203A&lr=&aq=f&oq=&fp=be4313e544833b95

Это я уже смотрел (говорю, что уже весь интернет облазил) - только пользы никакой.
Смысл в том, что в консоли видно много дополнительных свойств, но я не могу их программно получить ни через ADsGetObject("WinNT:// ни через ADsGetObject("LDAP://.
Вот снимок экрана: http://s42.radikal.ru/i095/0911/74/99d1422793f6.jpg
Видно, что в консоли видно и номер телефона и e-mail и даже номер кабинета, я же не могу получить эти параметры хоть тресни... :(


 
Валигози ©   (2009-11-04 16:45) [8]

Вот нашёл на MSDN: http://msdn.microsoft.com/en-us/library/aa746507(VS.85).aspx
Перечисляются свойства которые не поддерживает провайдер "WinNT://" в интерфейсе IADsUser, но при этом не пишут, как же эти свойства получить... :(


 
vKoka   (2009-12-16 16:59) [9]

У провайдера WinNT другой набор свойств.
iadsnametrnslate (гугли) поможет сконвертировать domain\userid имя к формату LDAP, а там уже вытаскивай свойства, которые тебе нужны.



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

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

Наверх




Память: 0.47 MB
Время: 0.07 c
6-1257969182
Lamer6666
2009-11-11 22:53
2013.03.22
Как же выдрать нужный кусочем html кода.


15-1332688326
Дмитрий С
2012-03-25 19:12
2013.03.22
Физически 32х битная система может иметь доступ к


15-1337109798
palva
2012-05-15 23:23
2013.03.22
Мы все под колпаком


15-1332852071
stas
2012-03-27 16:41
2013.03.22
У кого есть Galaxy tab


2-1340780940
aka
2012-06-27 11:09
2013.03.22
Удаления пробелов в строке.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский