![]() |
ShellExecute vererbt (neuerding?) Admin-Rechte
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? |
AW: ShellExecute vererbt (neuerding?) Admin-Rechte
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.
|
AW: ShellExecute vererbt (neuerding?) Admin-Rechte
Zitat:
Jedenfalls war ich bisher immer Felsenfest davon überzeugt das es so ist. |
AW: ShellExecute vererbt (neuerding?) Admin-Rechte
|
AW: ShellExecute vererbt (neuerding?) Admin-Rechte
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; |
AW: ShellExecute vererbt (neuerding?) Admin-Rechte
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. |
AW: ShellExecute vererbt (neuerding?) Admin-Rechte
Zitat:
Hab da einen Eintrag gefunden der das Problem beschreibt: ![]() Und im Verlinkten Blog-Eintrag ![]() |
AW: ShellExecute vererbt (neuerding?) Admin-Rechte
Bei MS gibt auch einen Eintrag:
![]() Leider wurden die Links auf dem Server wieder alle umgestellt so das man das einfache Beispiel nicht mehr findet. :cry: Und jetzt das SDK zu installieren wollte ich vermeiden ... |
AW: ShellExecute vererbt (neuerding?) Admin-Rechte
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. |
AW: ShellExecute vererbt (neuerding?) Admin-Rechte
Zitat:
OK. Befehl(!) überlesen .... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 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