Programm soll nach Rechten Fragen unter Win7



  • Mehr Rechte zur Programmlaufzeit holen ist nicht drin 😉

    Recht verbreitet ist:
    Das Programm einfach mit höheren Rechten nochmal starten (ShellExecuteEx() mit Verb "runas") und...
    - alte Instanz verstecken, bis Instanz mit höheren Rechten beendet ist
    - über die "alte" Instanz einfach nur drüber legen
    - alte Instanz ganz ersetzen

    Ansonsten gibt es noch diesen Weg:
    http://msdn.microsoft.com/en-us/library/ms679687(v=vs.85).aspx



  • Man kann einfach so, ohne jede Nutzerzustimmung das Programm mit mehr Rechten starten?! Na denn, danke für die Antworten 👍



  • BootLag-BootLag- schrieb:

    Man kann einfach so, ohne jede Nutzerzustimmung das Programm mit mehr Rechten starten?! Na denn, danke für die Antworten 👍

    Das hast Du falsch verstanden... auch bei ShellExecute mit "runas" kommt der UAC Prompt...



  • BootLag-BootLag- schrieb:

    Man kann einfach so, ohne jede Nutzerzustimmung das Programm mit mehr Rechten starten?! Na denn, danke für die Antworten 👍

    Du hast das nicht richtig verstanden.
    Ein Programm kann nur mit diesen Rechten arbeiten, mit dem es gestartet wurde.

    D.h. ein normaler User startet dieses Programm -> Programm erhält die Rechte eines normalen Users.
    Ein Administrator startet dieses Programm -> Programm erhält die Rechte dieses Administrators.
    Diese Rechte an einem programm kann auch ein Installer einrichten, vorausgesetzt, der User (oder eben meistens der Administrator) hat ihn mit den erweiterten Rechten ausgestattet.
    Und kann so auch z.B. als Service im Autostart ausführen lassen.

    Aber ein Programm kann niemals einfach so zur Laufzeit zusätzliche Rechte verschaffen.
    Jedenfalls nicht ohne Hilfe eines Administrators oder eines anderen Programms welches mit Administratorrechte läuft.

    Das Thema ist an sich schon komplex, da es sehr wohl viele Möglichkeiten gibt, die hier im Rahmen eines einzelnen beitrags sprengen würde.

    HTH,
    Martin



  • Eine Möglichkeit muss es schon geben, denn ich weiss was er meint.
    Viele Programme fragen nach dem Start nach Adminrechten über das UAC.



  • Scorcher24 schrieb:

    Viele Programme fragen nach dem Start nach Adminrechten über das UAC.

    Das ist korrekt.
    Aber der Fragesteller wollte "ohne jede Nutzerzustimmung mit mehr Rechten starten", und das geht nun mal wirklich nicht.
    (Das kann z.B. ein bereits mit Admin-Rechten eingerichteter Service machen, aber das ist was anderes!)
    Er muß das bereits beim Setup dafür gesorgt haben, dann kann ein Nutzer später das Programm ohne Nutzerstimmung mit den eingerichteten Admin-Rechten ausführen.
    Aber niemals ein einfaches App zur Laufzeit plötzlich mehr Rechte geben. Punkt.

    Zur Info: Man kann in der Manifest des programms einige Einträge für "requestedExecutionLevel" wie z.B. "AsInvoker" und/oder "requireAdministrator" für elevated (angehobene) Rechte angeben.

    HTH,
    Martin



  • Na dann erzähl mal... da bin ich gespannt...



  • Mmacher schrieb:

    Scorcher24 schrieb:

    Viele Programme fragen nach dem Start nach Adminrechten über das UAC.

    Das ist korrekt.
    Aber der Fragesteller wollte "ohne jede Nutzerzustimmung mit mehr Rechten starten", und das geht nun mal wirklich nicht.
    (Das kann z.B. ein bereits mit Admin-Rechten eingerichteter Service machen, aber das ist was anderes!)
    Er muß das bereits beim Setup dafür gesorgt haben, dann kann ein Nutzer später das Programm ohne Nutzerstimmung mit den eingerichteten Admin-Rechten ausführen.
    Aber niemals ein einfaches App zur Laufzeit plötzlich mehr Rechte geben. Punkt.

    Zur Info: Man kann in der Manifest des programms einige Einträge für "requestedExecutionLevel" wie z.B. "AsInvoker" und/oder "requireAdministrator" für elevated (angehobene) Rechte angeben.

    HTH,
    Martin

    weshalb ich möchte, dass das Programm an dieser Stelle den Nutzer bittet, ihm diese Rechte zu geben.

    Aus dem Originalpost. Möchte er nicht. Er hat später einen Post von dir missverstanden.



  • Also ich meinte das so, dass ich nicht erwarten kann, dass der Benutzer mit rechts auf die exe klickt und dann den Eintrag "Als Administrator ausführen" wählt. Das es nicht (mit legalen Mitteln) möglich ist, sich einfach neue Nutzerrechte zu verschaffen habe ich jetzt verstanden. Mir geht es um diesen blauen Dialog unter Win7, der den Nutzer zur Laufzeit nach seiner Zufstimmung fragt...Hat das schonmal jemand von euch hingekriegt?



  • Du hast dann in deiner Anwendung z.B. nen Button dessen Funktion Admin-Rechte benötigt, d.h. du packst da das Shield-Icon drauf damit der User das auch optisch direkt sieht:
    http://i.msdn.microsoft.com/dynimg/IC294948.png

    Klickt man auf den Button soll dieses Ding erscheinen:
    (*) http://i.msdn.microsoft.com/dynimg/IC294937.png
    ...und du willst anschließend in deiner Anwendung die Funktion des Buttons mit Admin-Rechte ausführen.

    ShellExecuteEx() mit "runas"-Verb lässt genau (*) erscheinen.
    D.h. klickt der Benutzer auf den Button, startest du deine Anwendung einfach nochmal via ShellExecuteEx() mit "runas"-Verb (evtl. Parameter mitgeben damit die neue Instanz weiß was sie zu tun hat oder IPC-Mechanismen nutzen).
    Du hast dann die "normale" Instanz am laufen und die "Admin"-Instanz (sofern der Benutzer im UAC-Dialog nicht abgebrochen hat)
    Da du den Benutzer mit 2 Instanzen nicht verwirren willst, versteckst du die "normale" oder beendest sie 😉



  • Oder man macht für den Task einfach ne reine Shellanwendung.



  • Ok das klingt gut 👍
    Danke euch


Anmelden zum Antworten