![]() |
Elevated Programm soll Funktion non-elevated ausführen
Ich möchte aus einem Programm, das unter Vista oder Win7 elevated (also mit Admin-Rechten läuft) eine Funktion ausführen, die NICHT elevated ist. Das brings zwar keine Sicherheitsbedenken mit sich (ich möchte ja weniger Rechte und nicht mehr...) aber das funktioniert dann wohl doch nicht so einfach.
Auf eine extra-Exe Datei, wo die Funktionen entsprechend ausgelagert sind, sollte möglichst verzichtet werden. Wahrscheinlich ist eine Lösung mit JWSCL irgendwie möglich. Aber ich habe keinen Ansatzpunkt gefunden. Bin für jede Hilfe dankbar. :) |
Re: Elevated Programm soll Funktion non-elevated ausführen
In deinem eigenen Prozess wird das nicht gehen. Du kannst zwar einem einzelnen Thread ein eingeschränktes Token zuweisen (Impersonation), aber dieser Thread kann jederzeit RevertToSelf aufrufen und damit wieder das Prozess-Token erhalten.
|
Re: Elevated Programm soll Funktion non-elevated ausführen
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:
Bei besseren Ideen, bitte Bescheid geben.
var
ExplorerToken : TJwSecurityToken; begin ExplorerToken := TJwSecurityToken.CreateCompatibilityQueryUserToken(MAXIMUM_ALLOWED, 'explorer.exe'); TJwAutoPointer.Wrap(ExplorerToken); ExplorerToken.ImpersonateLoggedOnUser; //do stuff ExplorerToken.RevertToSelf; end; |
Re: Elevated Programm soll Funktion non-elevated ausführen
Du könntest auch dein eigenes Token nehmen und eine eingeschränkte Version davon erstellen (CreateRestrictedToken), aber das ist ziemlich kompliziert, weil du die richtigen Rechte entfernen musst - insofern scheint mir dein Versuch eine gangbare Lösung zu sein.
|
Re: Elevated Programm soll Funktion non-elevated ausführen
och, dann starte ich mir einfach eine explorer.exe mit Adminrechnten :angel2:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz