Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#3

Re: AD + LastLogon & pwdLastSet

  Alt 28. Mär 2008, 08:37
Irgendwie will es mir nicht gelingen.

Hier mein Code:
Delphi-Quellcode:
function FileTimeToDateTime(ft: TFileTime): TDateTime;
var
  tzi: TTimeZoneInformation;
  lt, st: TSystemTime;
begin
  GetTimeZoneInformation(tzi);
  FileTimeToSystemTime(ft, st);
  SystemTimeToTzSpecificLocalTime(@tzi, st, lt);
  Result := SystemTimeToDateTime(lt);
end;

...

procedure Tfrm_main.GetADSInfo(suchbegriff : string);
var rs,conn, com : Variant;
    strBase, strFilter, strAttributes, strADS : string;
begin
  conn := CreateOleObject('ADODB.Connection');
  com := CreateOleObject('ADODB.Command');
  try
    conn.Provider := 'ADsDSOObject';
    conn.open;
    com.ActiveConnection := conn;
    strBase := '<LDAP://test.com>';

    if rb_name.Checked = TRUE then
      strFilter := '(&(objectCategory=person)(objectClass=user)(displayname='+suchbegriff+'))';

    if rb_lanid.Checked = TRUE then
      strFilter := '(&(objectCategory=person)(objectClass=user)(sAMAccountName='+suchbegriff+'))';

    strAttributes := 'givenname,sn,sAMAccountName,lastLogon,pwdLastSet,badPasswordTime,telephoneNumber';
    strADS := strBase + ';' + strFilter + ';' + strAttributes + ';subtree';
    Com.CommandText := strADS;
    Com.Properties['Page Size'] := 100000;
    Com.Properties['Searchscope'] := 2;
    Com.Properties['Cache Results'] := False;
    rs := Com.Execute;

    if Not rs.EOF then
    begin
      lbl_vorname.Caption := rs.Fields['givenname'].Value;
      lbl_nachname.Caption := rs.Fields['sn'].Value;
      lbl_lanid.Caption := UpperCase(rs.Fields['sAMAccountName'].Value);
      
      // hier knallt es: Inkompatible Typen: '_FILETIME' und 'Variant'
      lbl_passwordchange.Caption := DateTimeToStr(FileTimeToDateTime(rs.Fields['pwdLastSet'].Value));
    end
    else
      MessageDlg('Kein Datensatz gefunden.',mtInformation,[mbOK],0);
    Rs := NULL;
  finally
    com := NULL;
    conn.Close;
    conn := NULL;
  end;
end;
...
Ich habe schon versucht den Rückgabewert umzuwandeln mit VarTo... Aber leider keinen Erfolg gehabt. Für weitere Hilfestellungen wäre ich dankbar.

Gruß, Sven
  Mit Zitat antworten Zitat