![]() |
Re: AD + LastLogon & pwdLastSet - Hilfe!!!!
Liste der Anhänge anzeigen (Anzahl: 1)
So, ich habe soeben den Code von Marabu getestet. Aber es kommt immer noch ne Fehlermeldung. Siehe Screenshot. :gruebel:
Ich hoffe wir finden noch ne Lösung. Dann ist nämlich mein Programm fertig. War schön. Gruß, Sven P.S.: Das nächste Mal lasse ich das Hilfe weg, damit hier nicht so heftige Diskussionen auftreten :-) |
Re: AD + LastLogon & pwdLastSet - Hilfe!!!!
Wie sieht denn deine fehlerauslösende Zuweisung jetzt aus?
Welche variant variable enthält denn den IDispatch pointer? |
Re: AD + LastLogon & pwdLastSet - Hilfe!!!!
Mein Code sieht jetzt so aus:
Delphi-Quellcode:
Großes Fragenzeichen. Wenn ich das so umsetze, kommt die Fehlermeldung, die ich im Screenshot gezeigt habe.
procedure Tfrm_main.GetADSInfo(suchbegriff : string);
var rs,conn, com : Variant; strBase, strFilter, strAttributes, strADS : string; ft : TFileTime; 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 passt es immer noch nicht...warum?...keine Ahnung davon Int64(ft) := rs.Fields['pwdLastSet'].Value; lbl_passwordchange.Caption := DateTimeToStr(FileTimeToDateTime(ft)); end else MessageDlg('Kein Datensatz gefunden.',mtInformation,[mbOK],0); Rs := NULL; finally com := NULL; conn.Close; conn := NULL; end; end; |
Re: AD + LastLogon & pwdLastSet - Hilfe!!!!
Hallo,
hat zwar ebend ein wenig bei mir gedauert (ca. 40 min), aber jetzt geht es. Folgende Vorbemerkung zu pwdLastSet: (Auszug aus der MSDN) Zitat:
Zitat:
Delphi-Quellcode:
gibt ein Interface vom Type IADsLargeInteger zurück.
...
rs.Fields['pwdLastSet'].Value ... Was ist zu tun? 1. ActiveDs_TLB in die uses-klausel aufnehmen (wegen IADsLargeInteger). 2. die Variablen pls : Variant und li : IADsLargeInteger; anlegen und 3. das ganze zur Zusammenarbeit bringen
Delphi-Quellcode:
Fertig. Nun klappt es auch mit dem Datum und der Uhrzeit.
...
pls := rs.Fields['pwdLastSet'].Value; li := IDispatch(pls) As IADsLargeInteger; ft.dwLowDateTime := Li.LowPart; ft.dwHighDateTime := li.HighPart; ... Viele Grüße und bis bald. |
Re: AD + LastLogon & pwdLastSet - Hilfe!!!!
GENIAL.
Vielen vielen Dank euch. Vorallem gilt der Dank Alter Mann und marabu. Nun ist mein Programm fertig. DANKE NOCHMAL. Gruß, Sven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz