AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Elevated Programm soll Funktion non-elevated ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

Elevated Programm soll Funktion non-elevated ausführen

Offene Frage von "CodeX"
Ein Thema von CodeX · begonnen am 31. Okt 2009 · letzter Beitrag vom 1. Nov 2009
Antwort Antwort
CodeX

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

Elevated Programm soll Funktion non-elevated ausführen

  Alt 31. Okt 2009, 15:58
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.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 31. Okt 2009, 16:13
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
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
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

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

  Alt 1. Nov 2009, 14:57
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 1. Nov 2009, 16:20
och, dann starte ich mir einfach eine explorer.exe mit Adminrechnten
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz