Einzelnen Beitrag anzeigen

ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: LsaEnumerateLogonSessions gibt nicht eingeloggte User in Liste aus

  Alt 7. Jan 2012, 08:02
Ich denke das auch NetWkstaUserEnum nicht ganz das richtige ist.
Zitat:
The NetWkstaUserEnum function lists information about all users currently logged on to the workstation. This list includes interactive, service and batch logons.
Irgendwie müsste ich die dann noch unterscheiden.

In der NetAPI Funktion NetWkstaUserEnum() kannst Du über den Parameter "level" 2 Optionen steuern:
Mit level = 0 werden explizit alle gerade aktiv am lokalen Rechner angemeldeten Benutzer ermittelt; die zwar grundsätzlich am System angemeldeten, aber gerade nicht aktiv eingeloggten Benutzer werden nicht berücksichtigt.
Mit level=1 dagegen wird nur der zum aktiven Desktop gehörige Benutzer und dieser mit zusätzlichen Angaben ausgegeben.
Absolut wichtig zu beachten ist dabei nur die richtige Verwendung der jeweiligen Records zur Auswertung der zurückgelieferten Bufferpointer.

Die mit level 0 erreichbare Option war doch genau Dein (ursprüngliches) Anliegen ? Wo liegt also jetzt Dein Problem ?
Hast Du das denn, so wie in meinem Beispiel vorgeschlagen, wenigstens einmal praktisch versucht, bevor Du die Verwendung von NetWkstaUserEnum() allein mit Hinweis auf das MS-Zitat verwirfst ?

Leider sind mit NetWkstaUserEnum() aber keine Angaben zur LogonTime des jeweiligen Benutzers zu erhalten. Eine Möglichkeit dazu wäre jedoch durch gegenseitigen Abgleich der beiden, mit NetWkstaUserEnum() und mit LsaEnumerateLogonSessions() erhaltenen Listen. Die LsaEnumerateLogonSessions()-Liste filterst Du nach den Benutzernamen, die in der NetWkstaUserEnum()-Liste ausgeworfen sind, und kämest somit über die zugehörigen Details der LsaEnumerateLogonSessions()-Liste an die jeweiligen LogonTime(s) aller aktiv angemeldeten Benutzer.
Nachteil dieses Weges: um an die Details der Sessions in der LsaEnumerateLogonSessions()-Liste zu kommen, muss man diese Funktion mit Adminrechten vornehmen. NetWkstaUserEnum() dagegen benötigt keine Adminrechte.
  Mit Zitat antworten Zitat