Einzelnen Beitrag anzeigen

CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#3

Re: Elevated Programm soll Funktion non-elevated ausführen

  Alt 1. Nov 2009, 00:22
Ich habe jetzt nochmal mit Tokens herumgespielt.
Ich bin mir nach wie vor nicht sicher, wie ich das Token des eigenen Prozesses im non-elevated Status bekomme, wenn er gerade elevated läuft. Ich nehme jetzt einfach das Token des Explorers. Das hat jetzt in allen Tests funktioniert. Ob das allerdings die beste Lösung ist, weiß ich nicht...

Delphi-Quellcode:
var
  ExplorerToken : TJwSecurityToken;
begin
  ExplorerToken := TJwSecurityToken.CreateCompatibilityQueryUserToken(MAXIMUM_ALLOWED, 'explorer.exe');
  TJwAutoPointer.Wrap(ExplorerToken);

  ExplorerToken.ImpersonateLoggedOnUser;

  //do stuff

  ExplorerToken.RevertToSelf;
end;
Bei besseren Ideen, bitte Bescheid geben.
  Mit Zitat antworten Zitat