![]() |
Zeit, die der User angemeldet ist
Hallo DP'ler,
ich möchte wissen, wie lange ein Nutzer am System (Windows XP) bereits angemeldet ist. Mit GetTickCount kann ich ermitteln, wielange Windows XP bereits läuft, allerdings möchte ich auch wissen, wielange ein Nutzer bereits eingeloggt ist. Ich bin beim Suchen hier über die API-Funktion LsaGetLogonSessionData() gestolpert - komme damit aber nicht zurecht. Gibt es etwas Einfaches :? Vielen Dank für Eure Hilfe Ines |
AW: Zeit, die der User angemeldet ist
Zitat:
Wo hängst du denn damit? PS: Im MSDN stehen alle nötigen Infos ![]() ![]() |
AW: Zeit, die der User angemeldet ist
Also so ganz trivial ist es nicht. Das Beispiel aus dem MSDN ist schon recht komplex und das mit Delphi nachbauen dürfte auch nicht in fünf Minuten gemacht sein. Das Problem ist ja die richtige SessionID zu bekommen. Und wir wären wieder bei dem Problem, was ist der eingeloggte Benutzer? Es kann ja auch TerminalSessions geben, dann kann man mehrere eingeloggte Benutzer haben. ;)
Insofern muss ich ihr schon recht geben. Vor allem, wenn man mit der WinaAPI nicht so vertraut ist. |
AW: Zeit, die der User angemeldet ist
|
AW: Zeit, die der User angemeldet ist
Guten Morgen und Danke für Eure Hilfe.
Zitat:
Liebe Grüße Ines |
AW: Zeit, die der User angemeldet ist
Wenn du nicht weiter kommst kannst du jederzeit gern fragen. Ich denke bisher hast du wenig Quelltext-Hilfe bekommen weil keine konkrete Frage danach bestand. Und einfach den kompletten Quelltext zu posten ist nicht unsere Art weil wir ja sehen wollen das der andere sich auch bemüht und nicht andere die Arbeit machen lässt.
Wenn du also genau sagst was dein derzeitiges Problem mit der Funktion ist, denke ich, wirst du recht schnell auch konkretere Hilfe dazu bekommen. |
AW: Zeit, die der User angemeldet ist
Hallo,
ich muß Euch nochmals belästigen. Über LsaGetLogonSessionData bekomme ich die Logon-Zeit als Large_Integer (wußte bisher garnicht, daß es so etwas gibt) :) Wie kann ich einen Large_Integer-Wert in ein DateTime umwandeln? Mit der Funktion UnixToDateTime bin ich nicht recht weitergekommen - es kam keine plausible Zeit dabei heraus. Ich will nur einen Denkansatz oder ein paar Stichworte - keinen fertigen Code.:glaskugel: Viele Grüße Ines |
AW: Zeit, die der User angemeldet ist
Ein TDateTime ist hier glaub ich die falsche Wahl denn der ist für Uhrzeiten + Datum. Wenn du Eine Zeit > 24 Stunden hast gibt es dann Probleme diesen Wert vernünftig anzuzeigen.
|
AW: Zeit, die der User angemeldet ist
Welches Format oder welche Einheit sind in LogonTime hinterlegt? Sind das Millisekunden?
Liebe Grüße Ines |
AW: Zeit, die der User angemeldet ist
Oh, ich habe Mist geschrieben. Ich bin davon ausgegangen das die die Funktion die Dauer zurück gibt, die der Nutzer bereits eingeloggt ist oder du die Dauer die du errechnest als TDateTime haben willst.
|
AW: Zeit, die der User angemeldet ist
Hallo,
soweit ich das verstanden habe ![]() ![]() ![]() [EDIT] in ms[/EDIT] Reine Vermutung. Gruß, Chris |
AW: Zeit, die der User angemeldet ist
LogonTime ist die absolute Zeit als UTC (Datum + Tageszeit) im Format TFileTime. Eine Konvertierung in das TDateTime-Format kann mit folgender Routine erfolgen:
Delphi-Quellcode:
{ ------------------------------------------------------------------- }
// convert Filetime to Delphi time (TDateTime) function FileTimeToDateTime (ft : TFileTime) : TDateTime; var st : TSystemTime; dt : TDateTime; begin FileTimeToSystemTime(ft,st); with st do begin if TryEncodeDate(wYear,wMonth,wDay,Result) then begin if TryEncodeTime(wHour,wMinute,wSecond,wMilliseconds,dt) then Result:=Result+dt; end else Result:=EncodeDate(1980,1,1); end; end; |
AW: Zeit, die der User angemeldet ist
Den gesamten Quelltext der Routine zum Abfragen der Sitzungsdaten (SessionData) findet man
![]() |
AW: Zeit, die der User angemeldet ist
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe gerade auch ein Problem mit der Logon Zeit. Und zwar wenn sich ein User mehrmals am system an- und abmeldet tauchen seine Session in LsaEnumerateLogonSessions mehrmal auf. Alle mit der gleichen Session ID. Wie kann ich die richtige herausfiltern?
Hier wird mein Prolem nochmal geschildert. ![]() Man kann es auch im Bild erkennen. User Test ist hier gerade nicht angemeldet, aber wenn er es wäre würde bei allen Einträgen das gleiche stehen. Welcher Eintrag ist der richtige? |
AW: Zeit, die der User angemeldet ist
Zitat:
|
AW: Zeit, die der User angemeldet ist
Gib mal bei Google "TSecurityLogonType" ein (in diesem Fall inklusive der Anführungszeichen), wobei man auch nach
![]() |
AW: Zeit, die der User angemeldet ist
Hat schon jemand für die doppelten Einträge eine Lösung gefunden?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 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