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/)
-   -   Delphi Adminrechte für Procedure ? (https://www.delphipraxis.net/140229-adminrechte-fuer-procedure.html)

turboPASCAL 14. Sep 2009 08:07


Adminrechte für Procedure ?
 
Hi,

ich muss gleich mal am frühen Morgen eine blöde Frage stellen.
Kann oder wie könnte man für eine Funktion Admin-Rrechte setzen ?

Beispiel. ein Programm startet normal ohne Adminrechte, bei einem Klick auf einen Button soll nun zB.
für das Werkeln in der Registry Adminrechte angefordert werden. (UAC etc. pp.)

xaromz 14. Sep 2009 08:14

Re: Adminrechte für Procedure ?
 
Hallo,

nein, das geht nicht. Rechte gelten immer für den gesamten Prozess. Du hast also zwei Möglichkeiten: Das Programm mit Admin-Rechten neu starten oder einen Out-Of-Process COM-Server starten, welcher als Admin läuft.

Gruß
xaromz

turboPASCAL 14. Sep 2009 08:19

Re: Adminrechte für Procedure ?
 
Auha, dachte ich mir.

MSDN-Library durchsuchenOut-Of-Process COM-Server hört sich nach Arbeit an. :stupid: Gibt es da ein Beispiel für ?

xaromz 14. Sep 2009 08:34

Re: Adminrechte für Procedure ?
 
Hallo,

ich hab' da was gefunden: http://weblogs.asp.net/kennykerr/arc...t-Control.aspx. Ob das eine gute Beschreibung ist, kann ich aber nicht sagen, ich hab's mir nicht so genau angesehen.

Gruß
xaromz

Luckie 14. Sep 2009 08:42

Re: Adminrechte für Procedure ?
 
Wie wäre es mit MSDN-Library durchsuchenImpersonateLoggedOnUser?

http://www.michael-puff.de/Artikel/Impersonate.shtml

Phoenix 14. Sep 2009 08:45

Re: Adminrechte für Procedure ?
 
Zitat:

Zitat von xaromz
Rechte gelten immer für den gesamten Prozess. Du hast also zwei Möglichkeiten: Das Programm mit Admin-Rechten neu starten

Um das zu tun, gibt es seit Vista die neue Restart & Recovery API.

Du kannst also z.B. in einem Programm abprüfen, ob es Admin-Rechte hat. Wenn nicht, dann nimmst Du einen Button und packst da mittels der API dieses Security-Schild drauf.

Du kannst den Status der Anwendung dann speichern (z.B. alle aktuellen Änderungen speichern und die aktuellen nicht Speicherbaren Änderungen irgendwie in ein File schreiben). Dann benutzt Du die Restart & Recovery API, um Deinen Prozess mit Adminrechten neu zu starten. Bestätigt der User die UAC-Abfrage, wird Deine Anwendung neu gestartet und bekommt einen Kommandozeilenschalter mit, dass sie von R&R neu gestartet wurde (den kannst Du festlegen). Dann lädt deine neu gestartete Anwendung den alten Status aus dem File, führt die Änderungen durch und gut ist. Dein alter Prozess wird beendet.

Verneint der User die Bestätigung wird der neue Prozess nicht gestartet und Dein alter läuft eben ohne Admin-Rechte weiter.

turboPASCAL 14. Sep 2009 08:58

Re: Adminrechte für Procedure ?
 
@Luckie, guck ich mir an.

@xaromz, danke.


@Phoenix,

Zitat:

Du kannst also z.B. in einem Programm abprüfen, ob es Admin-Rechte hat. Wenn nicht, dann nimmst Du einen Button und packst da mittels der API dieses Security-Schild drauf.
Soweit bin ich schon. ;)

Zitat:

... Dann benutzt Du die Restart & Recovery API, um Deinen Prozess ...
Das hört sich interessant an.

Wenn ich nach "Restart & Recovery API" suche komme ich immer auf irgend welche Backupprogramme. :stupid:

Phoenix 14. Sep 2009 09:06

Re: Adminrechte für Procedure ?
 
Hier ist der MSDN-Artikel dazu:

Application Recovery and Restart im MSDN

Gibts leider ned auf Deutsch.

turboPASCAL 14. Sep 2009 09:15

Re: Adminrechte für Procedure ?
 
Och, das passt schon. C kann man(n) lesen. ;) Danke.

stOrM 14. Sep 2009 19:44

Re: Adminrechte für Procedure ?
 
Wenn Du dir das Übersetzen auch noch sparen willst, ich habs bereits Übersetzt.
Über SVN kannst Du die Sachen in der Unit JwaAppRecovery.pas finden.

SourceForge


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