AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Programm mit weniger Rechten starten
Thema durchsuchen
Ansicht
Themen-Optionen

Programm mit weniger Rechten starten

Ein Thema von Ralf Kaiser · begonnen am 3. Mär 2010 · letzter Beitrag vom 3. Mär 2010
Antwort Antwort
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#1

Programm mit weniger Rechten starten

  Alt 3. Mär 2010, 09:20
Hallo,

ich habe ein Programm das, per Manifest angefordert, immer mit erhöhten Rechten läuft. Dieses Programm muss nun eine andere EXE starten die aber "normale", also weniger, Rechte haben soll. Bei allen meinen Versuchen erbte die neu gestartete EXE natürlich die Rechte des aufrufenden Prozesses.

Kann mir jemand einen Tipp geben wie man beim Start eines anderen Programms dieses sozusagen "runter stufen" kann?

Danke schon mal,
Ralf
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Programm mit weniger Rechten starten

  Alt 3. Mär 2010, 09:30
Zitat von Alfi001:
Bei allen meinen Versuchen erbte die neu gestartete EXE natürlich die Rechte des aufrufenden Prozesses.
Was hast du gemacht? Bei Aufruf mit ShellExecute werden Rechte nicht vererbt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Programm mit weniger Rechten starten

  Alt 3. Mär 2010, 09:39
Zitat von Bernhard Geyer:
Zitat von Alfi001:
Bei allen meinen Versuchen erbte die neu gestartete EXE natürlich die Rechte des aufrufenden Prozesses.
Was hast du gemacht? Bei Aufruf mit ShellExecute werden Rechte nicht vererbt.
Also wenn ich mit ShellExecute starte dann hat das gestartete Programm hinterher ebenfalls Adminrechte!! Ich habe dazu ein kleines Testprogramm gebaut das sich selbst per Buttonklick nochmal startet. In dem Programm zeige ich an, ob adminrechte vorliegen und ob das Programm im Status "elevated" ist.

Wenn ich das Programm mit Adminrechten starte dann erbt die 2.Instanz die Rechte (bei ShellExecute!!!)
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Programm mit weniger Rechten starten

  Alt 3. Mär 2010, 09:45
In welchem OS hast'n das getestet und wie hast du die Rechte geprüft?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Programm mit weniger Rechten starten

  Alt 3. Mär 2010, 09:50
Zitat von himitsu:
In welchem OS hast'n das getestet und wie hast du die Rechte geprüft?
Im Moment Windows 7


Elevation hab ich mit einer Funktion aus der JCL getestet:

Delphi-Quellcode:
function IsElevated: Boolean;
const
  TokenElevation = TTokenInformationClass(20);
type
  TOKEN_ELEVATION = record
    TokenIsElevated: DWORD;
  end;
var
  TokenHandle: THandle;
  ResultLength: Cardinal;
  ATokenElevation: TOKEN_ELEVATION;
begin
  if (IsWinVista or IsWinServer2008 or IsWin7 or IsWinServer2008R2) then
  begin
    TokenHandle := 0;
    if OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, TokenHandle) then
    begin
      try
        ResultLength := 0;
        if GetTokenInformation(TokenHandle, TokenElevation, @ATokenElevation, SizeOf(ATokenElevation), ResultLength) then
          Result := ATokenElevation.TokenIsElevated <> 0
        else
          Result := False;
      finally
        CloseHandle(TokenHandle);
      end;
    end
    else
      Result := False;
  end
  else
    Result := IsAdministrator;
end;
Das Ergebnis stimmt auch, bei einem UAC-bestätigten Start wird der Status korrekt erkannt.
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Programm mit weniger Rechten starten

  Alt 3. Mär 2010, 11:20
Ich habe jetzt, hier in der DP (wo sonst????), doch noch eine Möglichkeit gefunden:

Thread der sich mit "CreateProcessAsUser" befasst (Der Thread fängt zwar mit einem Problem an, die Lösung steht dann weiter unten...)
Ralf Kaiser
  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 07:32 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