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!