Форум: "Сети";
Текущий архив: 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