Einzelnen Beitrag anzeigen

Dezipaitor

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

Re: Angemeldeter Benutzer auslesen

  Alt 31. Mär 2008, 18:26
Mit JWSCL geht es so.

UPDATE: http://blog.delphi-jedi.net/2008/03/...rom-a-service/

Delphi-Quellcode:
uses
  JwaWindows,
  JwsclToken,
  JwsclSid,
  JwsclStrings,
  SysUtils;

var
  UserToken : TJwSecurityToken;
  ConsoleUser : TJwSecurityId;
  UserSidString,
  UserName : TJwString;
begin
  //erst ab Windows XP
  UserToken := TJwSecurityToken.CreateWTSQueryUserToken(INVALID_HANDLE_VALUE);
  try
    ConsoleUser := UserToken.TokenUser;
    try
      UserSidString := ConsoleUser.StringSID;
      UserName := ConsoleUser.GetAccountName('');
      //Writeln(UserSidString);
      //Writeln(UserName);
    finally
      FreeAndNil(ConsoleUser);
    end;
    //User personifizieren
    UserToken.ImpersonateLoggedOnUser;
    
    Führe Funktionen im Kontext des Benutzers aus
    z.B. WinAPI GetUserName(...), GetShellFolder, usw.
Auch Zugriff auf Dateien und Registry laufen dann in diesem Kontext. CreateProcess funktioniert jedoch nicht damit.
    
    UserToken.RevertToSelf;

  finally
    FreeAndNil(UserToken);
  end;
end;
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat