ausführen als, Administrator

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von HerbertTestmann.

    ausführen als, Administrator

    Hallo,

    das Thema wurde hier schon mehrfach erläutert und ich habe die Lösungen auch probiert. Problem ... es funktioniert nicht :(

    Eine mit VB2010 erstellte *.exe soll unter XP bei der Ausführung automatisch Administratorrechte anfordern.
    Ich habe unter my.Project in app.manifest die Einstellung

    <requestedExecutionLevel level="asInvoker" uiAccess="false" />


    durch

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />


    ersetzt.

    Trotzdem kann jeder Benutzer die *.exe starten :(
    Ich habe noch mal ein komplett neues Projekt angefangen und nur die o.g. eine Einstellung geändert. Alles andere Standard.
    Trotzdem geht beim Start der Anwendung kein Fenster auf, das erweiterte Benutzerrechte einfordert. Ist es möglich, dass XP diese Funktion einfach nicht unterstützt?
    IMHO habe ich aber schon Programme gehabt, die nach dem Start per Windows dialog dazu auffordern einen User mit administrativen Rechten auszusuchen.
    Also nochmal zurück zum Start ...

    Ich habe einen User unter XP, der "Benutzer" ist und damit keine Admin Rechte hat.
    Ich habe eine VB *.exe, die zur Ausführung Admin Rechte braucht.

    Bisher muss ich zum Ausführen immer "Ausführen als" anklicken und den "Administrator" + PW auswählen.
    Das wird aber gern mal vergessen.
    Ich möchte gern, dass das Programm beim Starten gleich drauf hinweist, in dem das entsprechende Fenster von Win XP aufgeht.

    Ich hatte die Beiträge hier so verstanden, dass die Einstellung
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

    dafür verantwortlich ist :(

    HerbertTestmann schrieb:

    Ich hatte die Beiträge hier so verstanden, dass die Einstellung
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
    dafür verantwortlich ist


    Ist sie auch. Das ganze funktioniert IMHO nur unter Systemen mit Versionen >= Vista. Das Problem dabei ist also, dass XP (noch) nicht so schlau ist, die entsprechenden Rechte automatisch anzufordern. Stattdessen startet das Programm bei unpassenden Rechten einfach nicht oder es produziert eine Fehlermeldung.

    Es gibt in der ProcessStartInfo-Klasse eine Eigenschaft "Verbs", in der du bei ausführbaren Dateien das Verb "runas" angeben kannst. Das ausführende Betriebssystem fordert dann automatisch passende Rechte an. Hier stehen drei Möglichkeiten, erweiterte Rechte anzuforden

    Zitat / Auszug:

    VB.NET-Quellcode

    1. Private Function StartProcessAsAdmin(ByVal fileName As String, ByVal arguments As String) As System.Diagnostics.Process
    2. Dim pi As System.Diagnostics.ProcessStartInfo
    3. pi = New System.Diagnostics.ProcessStartInfo(fileName, arguments)
    4. 'If System.Environment.OSVersion.Version.Major >= 6 Then
    5. pi.Verb = "runas"
    6. 'End If
    7. Return System.Diagnostics.Process.Start(pi)
    8. End Function

    Auf Windows Versionen vor Vista wird jedoch der Dialog "Ausführen als ..." angezeigt, weshalb die Version auf größergleich 6.x also Vista geprüft wird.

    ...da wir genau diesen Dialog haben wollen, umgehen wir einfach die Prüfung.

    Mit dieser Funktion taucht noch ein Problem auf: Du musst zuerst ein kleines Hilfsprogramm ausführen, welches dann dein Hauptprogramm mit administrativen Rechten ausführt. Es ist aber nicht notwendig, zwei ausführbare Dateien auszuliefern - mit ein bisschen Geschick kannst du beides in einer Anwendung implementieren (Stichwort Mehrfachinstanzanwendung).
    Gruß
    hal2000