Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Adminrechte - Programmstart trotz Ablehnen (https://www.delphipraxis.net/204366-adminrechte-programmstart-trotz-ablehnen.html)

Benmik 23. Mai 2020 16:28

Adminrechte - Programmstart trotz Ablehnen
 
Man kann ein Programm per Manifest ja so konfigurieren, dass es Adminrechte anfordert, wobei die UAC erscheint. Verweigert man aber die Rechte mittels "Nein", startet das ganze Programm nicht mehr.
Gibt es auch eine Möglichkeit, dass bei "Nein" das Programm einfach ohne Adminrechte startet? Ich weiß, dass es diverse Möglichkeiten zur Abfrage gibt, aber ich suche nach einer 1-Klick-Lösung.

himitsu 23. Mai 2020 18:19

AW: Adminrechte - Programmstart trotz Ablehnen
 
Nein, nicht direkt, denn da dein Programm dabei nichts zu bestimmen hat, bzw. bei NEIN wird dein Programm nicht ausgeführt und kann somit nichts anderes machen.

https://docs.microsoft.com/de-de/vis...executionlevel

Level=asInvoker : so wenig wie möglich
Level=highestAvailable : so viel wie möglich
Level=requireAdministrator : unbedingt ganz viel

uiAccess=false: ohne den Benutzer zu fragen (nimm das was geht, wenn möglich)

Zitat:

ClickOnce-Anwendungen können nur mit dem Wert asInvoker installiert werden. Bei der Installation mit anderen Werten tritt ein Fehler auf.


Du kannst aber zwei EXEn erstellen.
* Eine mit Level=asInvoker (oder highestAvailable) und uiAccess=false
* und die startet, bzw. versucht die Andere zu starten (requireAdministrator oder highestAvailable und mit uiAccess=True)
* wenn das ging, beendet sie sich selbst und wenn nicht, dann arbeitet sie

Bernhard Geyer 23. Mai 2020 18:28

AW: Adminrechte - Programmstart trotz Ablehnen
 
Oder die Exe ist ohne Adminrechte im Manifest.
Beim start startest du dich nochmal mit "runas".
Startet dann diese neue Exe "durch", so kannst die zuerst gestartete Exe sich beenden.
Wenn der Start der Exe mit "runas" fehlschlägt, startet sie selbst "durch".

Machen andere Programme wie "TeamViewer" auch.

Benmik 23. Mai 2020 20:32

AW: Adminrechte - Programmstart trotz Ablehnen
 
Danke euch beiden. An zwei Instanzen und "RunAs" hatte ich gedacht, aber mit einer zusätzlichen Abfrage etc., die ich vermeiden wollte. Aber so wird das Ziel ja auch erreicht, dass es für den Anwender keinen Unterschied dazu gibt, dass das Manifest/UAC das Programm durchlassen würde.

Benmik 23. Mai 2020 20:58

AW: Adminrechte - Programmstart trotz Ablehnen
 
Ich würde gern eine Antwort nachschieben:

Die Adminrechte braucht mein Programm nur zu besonderen Gelegenheiten, es muss nicht das ganze Programm die ganze Zeit mit Adminrechten laufen. Jetzt habe ich hier von Alex eine schöne Möglichkeit gefunden, fallweise die Rechte anzufordern. Allerdings kann das mehrfach während der Laufzeit vorkommen.

Wie könnte eine Konstruktion aussehen, dass ich mir einmal eine Erlaubnis hole, die dann für mehrere Ausführungen eines externen Prozesses gültig wäre?

Assarbad 25. Mai 2020 11:50

AW: Adminrechte - Programmstart trotz Ablehnen
 
Zitat:

Zitat von Benmik (Beitrag 1465106)
Wie könnte eine Konstruktion aussehen, dass ich mir einmal eine Erlaubnis hole, die dann für mehrere Ausführungen eines externen Prozesses gültig wäre?

So wie es klingt, suchst du einen Windowsdienst. Damit kannst du dir sogar die erste Abfrage ersparen. Dienste existieren um einem unprivilegierten Prozeß scheibchenweise privilegierte Aktionen zu ermöglichen. Die Kommunikation läuft dann üblicherweise über die bekannten IPC-Mechanismen (bspw. Pipes).

Alternativ könnte man natürlich den mit erhöhten Rechten (runas) laufenden Prozeß laufenlassen und nur "verstecken" und dann wieder hervorholen, sobald er benötigt wird. Aber da bist du dann eben schon sehr dicht bei dem was Dienste ohnehin leisten sollen.

himitsu 25. Mai 2020 14:45

AW: Adminrechte - Programmstart trotz Ablehnen
 
Oder man speichert/clont sich das Token vom ersten Mal und benutzt es für die nachfolgenen Berechtigungsanforderungen.

Benmik 25. Mai 2020 18:13

AW: Adminrechte - Programmstart trotz Ablehnen
 
@Assarbad: Dienst ist ein bisschen überdimensioniert. Versteckter Prozess: Den müsste ich dann über IPC ansteuern, vermutlich?

@Himitsu: Klingt sehr gut, aber von welchem Token ist die Rede und wie soll das gehen?


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