Manfred schrieb:
> Was Lars will, wäre ein Virus oder Trojaner: Mit Benutzerrechten starten
> und es holt sich selbst erhöhte Rechte.
Nein, waere es nicht. Was er will:
Ein Programm, das nur fuer die erfordelichen Funktionen Adminrechte
bekommt. Lars sagt nicht, das der Nutzer das nicht bestaetigen muss.
Warum soll denn das gesamte Programm (z.B. das GUI, oeffnen/schreiben
einer Datei, Ein-/Ausgabe auf der Konsole) mit Adminrechten laufen, wenn
die Rechte nur fuer eine ganz bestimmte Funktion gebraucht werden?
1 | foo();
|
2 | bar();
|
3 | foobar();
|
Wenn jetzt nur fuer die Funktion bar() Adminrechte gebraucht werden,
warum muessen denn dann auch die Funktionen foo() und foobar() als Admin
laufen?
bar() wird aufgerufen -> Anforderung der Adminrechte
bar() wird verlassen -> Abgabe der Adminrechte
Es steht nirgends, dass das erlangen der Adminrechte ohne
Nutzerinteraktion oder ohne wissen des Nutzers erfolgen soll/muss. Es
soll lediglich, so verstehe ich das, ohne ein Programmneustart passieren
und es soll eben nicht die ganze Zeit mit Admminrechten laufen.
Manfred schrieb:
> Wenn das wirklich gehen sollte, wäre das eine schwerwiegende
> Sicherheitslücke des Betriebssystems!
Das das gesamte Programme die ganze Zeit mit Adminrechten laeuft/laufen
muss, das ist eine Sicherheitsluecke! Vielleicht ruft der Nutzer die
Funktion, die Adminrechte braucht, gar nicht auf. Trotzdem laeuft das
alles als Admin... ist schon ein tolles Konzept.
Ob das Programm nun die ganze Zeit mit Adminrechten laeuft (Dialog
kommmt beim Programmstart), oder waehrend der Programmausfuehrung ein
Dialog aufploppt, in dem die Adminrechte nachgefordert werden, macht
Sicherheitstechnisch kaum einen Unterschied. Der normale 0815-Nutzer
klickt beides mal auf "Jo, hier haste Adminrechte".
Ganz doofe Idee, was Lars machen koennte:
Mache aus der Funktion, die Adminrechte braucht, ein eigenes Programm.
Setze die Einstellungen fuer das Programm so, das dieses Programmm immer
als Admin gestartet wird. Jetzt kannst du aus deinem Hauptprogramm
heraus das Programm aufrufen und es sollte der UAC-Dialog erscheinen.
Parameter koenntest du per Datei oder Kommandozeile uebergeben.