2014-04-05 95 views
4

我試圖用sAMAccountName從Active Directory獲取用戶的電子郵件地址,但我收到此錯誤信息獲取用戶EmailAddress的:德爾福 - 從Active Directory

目錄屬性不能在緩存中找到。

我可以得到全名,部門和酌情權,但爲什麼我得到這個錯誤的電子郵件?

uses 
    ActiveDs_TLB, adshlp; 

procedure TMainForm.btnFillInfoClick(Sender: TObject); 
var 
    Usr: IAdsUser; 
    lStr: HRESULT; 
    xStrg: string; 
    ChkPRN: string; 
    RemoveDot: string; 
begin 
    //connect to AD and try exrtact the info/
    lStr := ADsGetObject('WinNT://10.120.200.16/'+edtPRN.Text, IADsUser, usr); // edtPRN.Text >> sAMAccountName 
    if Succeeded(lStr) then 
    begin 
    Usr.GetInfo; 
    EmpFullName := Usr.FullName; 
    RemoveDot := StringReplace(EmpFullName, '.', '',[rfReplaceAll, rfIgnoreCase]); 
    xStrg := Usr.FullName; 
    edtLastName.Text := GetLastWord(xStrg); 
    xStrg := StringReplace(RemoveDot, edtLastName.Text, '',[rfReplaceAll, rfIgnoreCase]); 
    EdtMidName.Text := GetLastWord(xStrg); 
    xStrg := StringReplace(RemoveDot, EdtMidName.Text, '',[rfReplaceAll, rfIgnoreCase]); 
    xStrg := StringReplace(xStrg, edtLastName.Text, '',[rfReplaceAll, rfIgnoreCase]); 
    edtFirstName.Text := GetLastWord(xStrg); 
    edtEmail.Text := Usr.EmailAddress; // <<<<< this is the error 
    end; 
end; 

回答

1

電子郵件地址屬性不可用使用WinNT://提供程序,您需要使用LDAP://提供程序。該屬性的名稱是「郵件」而不是「emailaddress」。這裏是ASDI和Delphi的鏈接。 ASDI examples