Autor Beitrag
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mo 28.11.05 11:32 
Hallo, für einen Service eines Kollegen suchen wir/ich schon eine ganze Weile nach einer Lösung.
Und zwar:

Ermitteln des aktiven Benutzers sprich desjenigen Benutzers der gerade auf dem PC arbeitet. Und das trotz aller Wiedrigkeiten wie RemoteLogin, Programme unter fremden Benutzerkonten(runas) und insbesondere Schneller Benutzerumschaltung.

Dabei sind uns schon die verrücktesten Ideen gekommen und wir haben auch schon etliche Units abgegrast(z.B. die Unit hier mit der EnumUsers Funktion) aber alle verfehlen das Ziel :(
Das Problem ist immer die angemeldeten Benutzer bzw. die aktiven Programmen einzuschränken und zu schlussfolgern.

Mein Kollege meinte, das selbst MS eingestanden hat, das es keine Messages gibt, die beim Login/out ausgelöst werden...

Weiß da einer Rat oder ist das Thema doch etwas zu abgehoben?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 28.11.05 12:57 
Naja, GetCurrentUser (oder wie die hieß) aus der Win-API geht so leicht auszutricksen, die brauch ich also gar nicht weiter erwähnen.

Unter allen Systemen vor WinXP ist das noch über die beschriebene Variante: User aller Prozesse fltern und nach Login-Usern filtern möglich, da nur 1 User aktiv sein kann (RunAs erzeugt Subprozesse, deren Parents zurückverfolgt werden können).

Eine Idee, die mir käme, wäre aus der Reg auszulesen, wer sich zuletzt angemeldet hat ... Aber das ist genauso unsicher wie alle bisherigen Versuche auch ...

Vielleicht kann man ja irgendwie die Eigentumsverhältnisse bei EnumDesktops auslesen ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
digi_c Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mo 28.11.05 14:53 
So ähnlich ist ein Ansatz von meinem Kollegen, der die Benutzerrechte die Shellinstanzen(explorer.exe) ausließt. Aber trotzdem weiß man ja nicht welcher der Aktive ist :(
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 28.11.05 14:56 
user profile iconBenBE hat folgendes geschrieben:
Naja, GetCurrentUser (oder wie die hieß) aus der Win-API geht so leicht auszutricksen, die brauch ich also gar nicht weiter erwähnen.

Äh, in wie fern austricksen? In diesem Fall ist es nur unbrauchbar, weil als Benutzer bei einem Dienst wohl "System" zurückgegeben wird. Die API Funktion guckt nämlich in den Token Informationen des aufrufenden Prozesses, welcher Benutzer den Prozess gestartet hat.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 28.11.05 16:08 
Schau dir mal Suche im MSDN LSAENUMERATELOGONSESSIONS an.. geht AFAIR, entgegen MS-Doku, auch schon unter Win2k.

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 28.11.05 22:50 
user profile icondigi_c hat folgendes geschrieben:
Mein Kollege meinte, das selbst MS eingestanden hat, das es keine Messages gibt, die beim Login/out ausgelöst werden...

Da finde ich aber folgendes etwas seltsam (eben drauf gestoßen): msdn.microsoft.com/l...anged.asp?frame=true
Weiß MS selbst nicht, was sie tun oder hab ich da was falsch verstanden?
digi_c Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Di 29.11.05 08:51 
@Motzi sieht gut aus aber da würden wir bei zwei parallen Sessions für beide Interactive zurückkriegen und könnten nicht herausfinden welche von beiden nun "den Fokus" hat

@UGrohne leider nicht für NT Schiene.

Das aufzählen ist nicht das Problem, das unterscheiden/filtern ist das was uns Kopfzerbrechen bereitet :(

Trotzdem Danke für eure Hinweise :) ist echt ne harte Nuss, gell?
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 29.11.05 10:18 
Hm.. ok, dann würde ich vorschlagen probiert mal das:

- den aktuellen Desktop per OpenInputDesktop öffnen
- mit GetUserObjectInformation die SID des Users holen der mit dem Desktop verknüpft ist
- mit LookupAccountSid den Usernamen für die SID holen
- nicht vergessen den Desktop wieder zu schließen ;)

Gruß, Motzi

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
digi_c Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Di 29.11.05 10:56 
Mir ein wenig zu hoch aber schaut vielversprechend aus.
Kollege wird es mal ausprobieren :)