Nach Buttonklick nachfolgenden Code als Admin ausführen

    • Offizieller Beitrag

    Hallo,

    Also wie das andere Programme machen (unter anderem Total Commander) : Das Programm mit zum Beispiel Kommandozeilenparametern noch mal ausfüren und dann mit RunAs. Eine weitere Möglichkeit, die AutoIt bietet ist, Code direkt via Kommandozeile auszuführen, bzw. ein Script auszuführen, ohne das AutoIt dafür installiert sein muss (nur mit der kompilierten EXE). Sieh dir dazu mal in der AutoIt Hilfe Command Line Parameters oder so an :)

    Gruß
    Spider

  • Ist es also möglich, nur ab einem bestimmten Codeteil Adminrechte anzufordern?


    Einfach in ein neues Script auslagern. Das geht sogar zur Laufzeit.

    Spoiler anzeigen
    [autoit]

    $hGUI = GUICreate('', 100, 30)
    $cButton = GUICtrlCreateButton('Admin!', 5, 5, 90, 20)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $cButton
    _CodeAlsAdminAusfuehren('MsgBox(0, "", "Wird MsgBox wird als Admin ausgeführt! IsAdmin() = " & String(IsAdmin()))')
    EndSwitch
    WEnd

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

    Func _CodeAlsAdminAusfuehren($sCode)
    FileDelete(@TempDir & '\~tempscript.au3')

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

    FileWrite(@TempDir & '\~tempscript.au3', _
    '#RequireAdmin' & @CRLF & _
    $sCode _
    )

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

    RunWait('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & @TempDir & '\~tempscript.au3"', @TempDir, @SW_SHOW)
    EndFunc ;==>_CodeAlsAdminAusfuehren

    [/autoit]
  • Soweit ich richtig verstanden habe heißt: @autoitexe bei fertigen exen den pfad zur exe. der parameter /Autoit3ExecuteScrips bedeutet das er das folgende script ausführen soll.
    also ja bei anderen gehts auch

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Na indem du einfach einen Code hintereinander setzt zb so..

    [autoit]


    Local $sCode = 'MsgBox(0, "", "Wird MsgBox wird als Admin ausgeführt! IsAdmin() = " & String(IsAdmin()))' &@CR& _
    'ConsoleWrite("Hallo hier noch ein Consolen Text")' &@CR& _
    'ShellExecute("cmd.exe")' &@CR& _
    'MsgBox(0,"","Und hier noch eine MsgBox")'

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

    _CodeAlsAdminAusfuehren($sCode)

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

    Func _CodeAlsAdminAusfuehren($sCode)
    FileDelete(@TempDir & '\~tempscript.au3')

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

    FileWrite(@TempDir & '\~tempscript.au3', _
    '#RequireAdmin' & @CRLF & _
    $sCode _
    )

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

    RunWait('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & @TempDir & '\~tempscript.au3"', @TempDir, @SW_SHOW)
    EndFunc ;==>_CodeAlsAdminAusfuehren

    [/autoit]

    Gruß Marvin