AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ShellExecute vererbt (neuerding?) Admin-Rechte
Thema durchsuchen
Ansicht
Themen-Optionen

ShellExecute vererbt (neuerding?) Admin-Rechte

Ein Thema von Bernhard Geyer · begonnen am 24. Okt 2014 · letzter Beitrag vom 24. Okt 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#1

ShellExecute vererbt (neuerding?) Admin-Rechte

  Alt 24. Okt 2014, 11:12
Ich verwende schon ewig ShellExecute um eine andere Exe zu starten.
Und ich bin mir fast zu 100% sicher das früher das Admin-Recht nicht vererbt hat.

Also eine (Installer-)Exe die Adminrechte hat starte mit ShellExecute eine zweite Exe. Diese hatte immer keine Adminrechte.
Jetzt scheint es aber so zu sein das sich hier die WinAPI geändert hat und der neue Prozess Adminrechte hat.

Die Frage ist nun: Wie startet man korrekt eine andere Exe ohne das die Rechte vererbt werden. Der gestartete Prozess soll nur die Rechte bekomme die er hätte wenn sein Icon auf dem Desktop gestartet wird?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#2

AW: ShellExecute vererbt (neuerding?) Admin-Rechte

  Alt 24. Okt 2014, 11:18
Ich finde es auf die Schnelle nicht wieder, aber IIRC gab es im Bezug auf die Rechte einen Unterschied, ob man ShellExecute oder CreateProcess benutzt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ShellExecute vererbt (neuerding?) Admin-Rechte

  Alt 24. Okt 2014, 11:20
Ich finde es auf die Schnelle nicht wieder, aber IIRC gab es im Bezug auf die Rechte einen Unterschied, ob man ShellExecute oder CreateProcess benutzt.
Bei CreateProcess wurden die Rechte (immer?) vererbt. Bei ShellExecute nicht (hier wird die Shell beauftragt den Prozess zu starten).
Jedenfalls war ich bisher immer Felsenfest davon überzeugt das es so ist.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: ShellExecute vererbt (neuerding?) Admin-Rechte

  Alt 24. Okt 2014, 11:30
Ist das System vollständig gepacht?
https://technet.microsoft.com/library/security/ms14-027
Markus Kinzler
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#5

AW: ShellExecute vererbt (neuerding?) Admin-Rechte

  Alt 24. Okt 2014, 11:32
Weil SHELLEXECUTE keine Rechte erbt, gibt es RUNASADMIN mit SHELLEXECUTEEX:
Das damit gestartete Programm hat dann die mitgegebenen Rechte.

Delphi-Quellcode:
// RunAsAdmin(Handle, ExtractFilepath (Application.ExeName) + 'FileAccessCopy.exe', strParams);
procedure RunAsAdmin(hWnd: HWND; aFile: string; aParameters: string);
var sei: TShellExecuteInfo;
begin
     FillChar(sei, SizeOf(sei), 0);
     sei.cbSize := sizeof(sei);
     sei.Wnd := hWnd;
     sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
     sei.lpVerb := 'runas';
     sei.lpFile := PChar(aFile);
     sei.lpParameters := PChar(aParameters);
     sei.nShow := SW_HIDE; // SW_SHOWNORMAL; SW_HIDE;
     if not ShellExecuteEx(@sei) then RaiseLastOSError;
end;

Geändert von hathor (24. Okt 2014 um 11:35 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: ShellExecute vererbt (neuerding?) Admin-Rechte

  Alt 24. Okt 2014, 11:36
das geht auch mit dem normalen ShellExecute mit 'runas' statt 'open'.
Aber sein Problem ist ja genau das Gegenteil, Rechte werden vererbt, was er nicht will.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: ShellExecute vererbt (neuerding?) Admin-Rechte

  Alt 24. Okt 2014, 11:46
Weil SHELLEXECUTE keine Rechte erbt, gibt es RUNASADMIN mit SHELLEXECUTEEX:
Das ist ja das Problem. ShellExecute vererbt ja die Elevation.


Hab da einen Eintrag gefunden der das Problem beschreibt: http://sourceforge.net/p/nsis/feature-requests/520/

Und im Verlinkten Blog-Eintrag http://blogs.msdn.com/b/aaron_margos...vated-app.aspx gibt ein Beispielprojekt das eine 100 (!) Zeilen-Lösung aufzeigt eben das nicht zu vererben.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: ShellExecute vererbt (neuerding?) Admin-Rechte

  Alt 24. Okt 2014, 11:52
Bei MS gibt auch einen Eintrag: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Leider wurden die Links auf dem Server wieder alle umgestellt so das man das einfache Beispiel nicht mehr findet.
Und jetzt das SDK zu installieren wollte ich vermeiden ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: ShellExecute vererbt (neuerding?) Admin-Rechte

  Alt 24. Okt 2014, 11:59
Beim Befehl (nicht Operation) RUNAS kann man auch den Benutzer angeben, welcher natürlich nicht unbedingt der Administrator sein muß.

Ansonsten halt CreateProcess, mit einem Token der Rechte des Benutzers.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: ShellExecute vererbt (neuerding?) Admin-Rechte

  Alt 24. Okt 2014, 12:06
Beim Befehl (nicht Operation) RUNAS kann man auch den Benutzer angeben, welcher natürlich nicht unbedingt der Administrator sein muß.
Und wie genau? Normal gibt man ja nur "runas" an. Aber wie gibt man "runas 'mit Useraccount mit der Installer gestartet wurde'"

OK. Befehl(!) überlesen ....
Windows Vista - Eine neue Erfahrung in Fehlern.

Geändert von Bernhard Geyer (24. Okt 2014 um 12:09 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:34 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