Ich sehe da kein Problem:
Delphi-Quellcode:
HRESULT Logon(
[in] BSTR bstrUserName,
[in] DWORD dwSessionId
);
Du bekommst den Benutzername und die SessionID. Da diese Funktion als SYSTEM aufgerufen wird, kann man das Token ganz einfach, wie in
How to get the user’s token in a service beschrieben steht holen. Der Konstruktor CreateWTSQueryUserTokenEx nimmt dwSessionID entgegen. Danach muss man nur noch ImpersonateLoggedOnUser ausführen, und schon arbeitet der Thread im Benutzerkontext.
PS.
Hättest du Lust einen Artikel über die Benutzung zu schreiben? Im
JEDI Windows
API Repository gibt es bereits die SENS Event
API als eine
COM Header LIB.