Einzelnen Beitrag anzeigen

Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#11

Re: Angemeldeter Benutzer aus Dienst ermitteln

  Alt 30. Nov 2007, 11:16
Zitat von xZise:
So... Dienst installiert, gestartet und getestet mit folgenden Code:

Delphi-Quellcode:
function GetUserName : string;
var
  sl : TStringList;
  Token : TJwSecurityToken;
begin
  Token := TJwSecurityToken.CreateTokenEffective(TOKEN_READ);
  try
    Result := Token.TokenOwner.AccountName[''];
  finally
    Token.Free;
  end;
end;
Ergebnis: Administratoren
Auch wenn keine Admins/niemand angemeldet sind.
Habe ich die falsche Variable genommen?
Total richtig. Wenn du den Source aus einem Dienst aufrufst, der unter SYSTEM läuft, dann ist das immer so.
Du musst das Token des angemeldeten Benutzers verwenden. CreateTokenEffective versucht zuerst das Token des aktuellen Threads
zu holen, und wenn das (meist) fehlschlägt, dann des Prozesses.

Dazu gibt es den Konstruktor TJwSecurityToken.CreateWTSQueryUserToken

Zitat von xZise:

MfG
xZise

[edit]JwaWtsApi32.WTSQueryUserToken(????); Was soll ich da übergeben [/edit]
Mit TJwSecurityToken.CreateWTSQueryUserToken brauchste da nix machen.

Vor einer Frage immer die Hilfe zu den Methoden lesen. Dazu ist sie ja da!
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat