#RequireAdmin-Problem

  • Hallo,

    nachdem ich das gesamte Forum nach einer Löszung durchforstet und leider keine Lösung dazu gefunden habe...

    Ich möchte #RequireAdmin nur dann aufrufen, wenn es sich um Windows Vista handelt. Also sozusagen: If OS = Vista then #requireadmin else Nichts.
    Mit einer If/Then-Anweisung funzt es nicht und mit einer Function auch nicht. Sobald irgendwo im Script ein #RequireAdmin drin steht, wird es beim Script-Start abgefragt.

    Gibt es keine Möglichkeit, das so wie für mich erforderlich zu lösen?


    Gruß
    Laith

    <3 Jetzt, Hier, Immer <3

  • Ich hatte in der Vergangenheit das gleiche Problem, ich hab den aktuellen Script einfach versucht ins Windows Verzeichnis zu kopieren und dann geschaut ob die Kopie existiert. Es gibt bestimmt eine "saubere" Lösung aber so hat's funktioniert.

  • Ja, das habe ich auch schon getestet. Funktioniert auch. Aber bei RequireAdmin kommt ja dann der Dialog zum Weitermachen unter Vista, den der Benutzer bestätigen muss. Und diese Funktionalität wäre mir auch wichtig.

    <3 Jetzt, Hier, Immer <3

  • [autoit]

    If @OSVersion = "WIN_XP" Then
    MsgBox(0,"","Stimmt")

    [/autoit][autoit][/autoit][autoit]

    Else

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0,"","Falsch")

    [/autoit][autoit][/autoit][autoit]

    EndIf

    [/autoit]


    WIN_XP steht für Windows XP - Für Vista weiß ich das nicht, wahrscheinlich WIN_VISTA

    [autoit]

    Func _admin()
    #RequireAdmin
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    If @OSVersion = "WIN_XP" Then
    _admin()
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von Desaster (17. Dezember 2008 um 18:13)

  • Erstmal Danke für die Antworten
    Ich habe mich auch etwas unglücklich ausgedrückt :(

    Ich möchte, dem Benutzer unter Vista die Wahl lassen, ob er das Script als Admin starten möchte (mit voller Funktionalität) oder als eingechränkter Benutzer (verminderte Funktionalität). Die Wahl würde ich über einen INI-Schalter oder ein GUI etc realisieren.

    Die Lösung von Desaster geht natürlich nicht, wie ich ja schon in meinem ersten Beitrag schrieb.

    Die Lösung von Progandy kommt nahe ran, aber dann kann ich dem Benutzer auch nicht die Wahl lassen.

    <3 Jetzt, Hier, Immer <3

  • Wenn ein restart des Programms erlaubt ist, kannst du auch ShellExecute -> runas nehmen ;)

    Spoiler anzeigen
    [autoit]

    If Not IsAdmin() Then
    If StringRight($CMDLINERAW,15) == " --#ADMINSWITCH" Then Exit MsgBox(16, 'Error', "Could not run Admin mode")
    If MsgBox(36, @AutoItExe, "Run in admin-mode?") = 6 Then
    ShellExecute(@AutoItExe,$CMDLINERAW & " --#ADMINSWITCH",@WorkingDir,"runas")
    Exit
    EndIf
    Else
    If StringRight($CMDLINERAW,15) == " --#ADMINSWITCH" Then $CMDLINERAW = StringTrimRight($CMDLINERAW,15)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"Prgrammcode","Programm läuft als Admin: " &IsAdmin())

    [/autoit]
  • @progandy
    So weit war ich fast schon, aber eben nur fast.
    Das schaut ganz gut aus und ich denke, dass ich das an meine Bedürfnisse anpassen kann.

    THX a lot :)

    <3 Jetzt, Hier, Immer <3