Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Erweiterte Rechte für Programm anforden, während Laufzeit (https://www.delphipraxis.net/151099-erweiterte-rechte-fuer-programm-anforden-waehrend-laufzeit.html)

lbccaleb 5. Mai 2010 21:16


Erweiterte Rechte für Programm anforden, während Laufzeit
 
Hallo,

wenn in Windows bestimmte Aktionen erweiterte Rechte brauchen, öffnet sich bei den Windowsprogrammen wie der Firewall oder dem Explorer ein Dialog, welches dem Programm zu erweiterten Rechten verhelfen soll.

Gibt es eine möglichkeit, das ich diesen Dialog auch aus meinem Programm aufrufen kann, und Ihm dadurch erweiterte Windows Rechte geben kann wie z.B.: schreiben in den Programm ordner, oder dem selben Anwendungspfad?

Bin für alle Tipps dankbar :)

himitsu 6. Mai 2010 08:01

Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit
 
http://www.michael-puff.de/Developer...ersonate.shtml

Den Dialog mußt'e allerdings selber basteln.


Aber eigentlich wäre es wohl besser wenn du stattdessen eine weitere Anwendung mit Admin-Manifest beilegst, welche diese Änderungen vornimmt.

Bernhard Geyer 6. Mai 2010 08:08

Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit
 
Zitat:

Zitat von himitsu
http://www.michael-puff.de/Developer/Delphi/Code-Snippets/Impersonate.shtml

Den Dialog mußt'e allerdings selber basteln.

Diese Lösung geht doch AFAIK nicht mehr wenn Vista/Win2008/Win7 im Einsatz ist und UAC aktiv ist.

Phoenix 6. Mai 2010 08:16

Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit
 
Während der Laufzeit geht es nicht.
Du kannst allerdings mithilfe der Restart & Recovery API arbeiten:
Anwendung speichert ihren Zustand in ein File und fragt via UAC nach Elevation. Wenn bestätigt wird ein neuer Prozess der Anwendung mit Adminrechten gestartet und die erste Instanz beendet.

Die neue Instanz lädt dann den alten Zustand und läuft mit Adminrechten weiter.

hoika 6. Mai 2010 08:35

Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit
 
Hallo,

gehn tut das schon, z.B. mit einem COM-Objekt (+COM elevation moniker).
Das darf sich erweiterte Rechte "holen".

Inwiefern der Aufwand gerechtefertigt ist, ist eine andere Frage.

Das einfachste ist die externe App mit entsprechendem Manifest.


Heiko

lbccaleb 6. Mai 2010 08:45

Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit
 
Hy,

also gedacht ist das ganze für ein Automatisches Update Tool, welches ja nur erweiterte Rechte brauch, wenn der User das Programm in einen Ordner gepackt hat, welcher halt erweiterte Rechte braucht.

Ich wollte diese also auch nur dann anfordern, wenn ich dort das Programm aktualisieren will, und aufgrund fehlender Rechte das nicht darf.

Zu Com hatte ich da bereits bsp. gefunden:

Bsp1 von VCL-Components
Bsp2 von http://freeweb.siol.net

Aber wie schon erwähnt, scheint mir das doch so ein wenig sehr aufwendig zu sein, somal ich davon gar keine Ahnung hab oO

Werde es dann mal so probieren wie es Phoenix vorgeschlagen hat.

Wobei ich mir vorstellen könnte das Windows dazu noch irgendwas parat hat.

Edit:
Ach ja wollte da auch nicht so viel große extra Units einbauen, da das ein nonVCL updater ist...

jaenicke 6. Mai 2010 09:39

Re: Erweiterte Rechte für Programm anforden, während Laufzei
 
Du kannst dir ja meine Updater-Unit anschauen, der ist ganz klein und noch nicht ganz sauber programmiert (Fehlerbehandlung...), aber vielleicht gibt der dir ja Ideen:
http://www.delphipraxis.net/internal....php?p=1071944
Dort starte ich die Exe selbst neu und kann so ohne zusätzliche externe Exe auch die Exe selbst aktualisieren (geht ab Windows 2000).


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 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