Gesamten Script als Admin Ausführen

  • Hallo zusammen,


    ich habe grade angefangen mit AutoIT und mich direkt mal hier
    angemeldet im Forum da ich schon auf ein Problem gestoßen bin, wo ich hoffe das
    mir einer hier weiterhelfen kann :)


    Und zwar das ganze läuft vom Grundprinzip her schon ziemlich gut, aber muss den Script immer noch als Administrator
    ausführen wegen der Benutzerkontensteuerung.


    Da ist jetzt meine Frage wie führe ich den ganzen Script mit runas aus? Habe schon mit einem 2ten Script probiert der
    diesen ausführt aber dann läuft das Ganze als Schleife.



    Schon mal Thx im Voraus


    MFG

  • #RequireAdmin (Hättest du bestimmt bei Google/Hilfe/Forumsuche gefunden). Was das ganze mit RunAs zu tun hat verstehe ich aber noch nicht. Willst du ein anderes Programm mit Admin-Rechten ausführen, geht das ja mit RunAs.

    Gruss Shadowigor

  • Hi danke für die Antwort


    #RequireAdmin verlangt ja dann die Manuele Eingabe von den Admin Daten, genau
    das soll eben nicht passieren.


    Genau der Script soll eine Datei als Admin starten und wenn
    sie fertig ist geschlossen werden. Das Starten der Datei klappt auch wunderbar
    nur der Rest des Scripts wie das Minimieren und schließen klappt nicht nur wenn
    ich die Datei mit Rechtsklick "Als Administrator Ausführen" mache,
    nur weiß ich leider nicht bzw. habs nicht gefunden wie ich dem ganzen script
    wie bei runas Admin rechte mit auf den weg gebe.


    MFG

  • Hi McRau,
    meinst du vllt so etwas?

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;<AutoItScript>
    Opt('MustDeclareVars', 1) ;0=no, 1=require pre-declare
    ;+----------------------------------------------------------------------------+
    ;| Header: Bestimmen der Übergabeparameter |
    ;| ( Alles Strings(!!!), bis auf ArgC ) |
    ;| FontAnzeigeCheck: |Il1 sind Alt-0124, Großes i, Kleines L, Eins |
    Const $Author='LogInAdmin.au3 ©2012 by ytwinky, MD'; |
    ;| EMail: [email='PIII1kSystem-AutoIt3Forum@yahoo.de'][/email] |
    ;| AutoIt3-Version: aktuelle beta |
    ;| Editor: SciTE aktuelle Version, feste Schriftart |
    ;| (Tastenkombination: keine) |
    ;| Zweck : als Admin einloggen |
    ;| Tab auf 2 setzen wg. Lesbarkeit |
    ;+----------------------------------------------------------------------------+
    Const $RegKey='HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\'
    Const $Usr='DefaultUserName', $Kw='DefaultPassword', $NurNetzAuth=2, $MBYes=6, $Esc=27
    Dim $RegUsr='Admin', $RegKw, $s=''
    If Not IsAdmin() Then
    RunAs('Admin', @Computername,'Admin-Kennwort', $NurNetzAuth, @ScriptFullPath, @SystemDir, Default)
    Else
    If $CmdLine[0]>0 Then $RegUsr=$CmdLine[1]
    $RegKw='Admin-Kennwort'
    If Msg('Nächster Benutzer wird ' &$RegUsr, @UserName &' abmelden..', 36)<>$MBYes Then Exit $Esc
    RegWrite($RegKey, $Usr, 'REG_SZ', $RegUsr)
    RegWrite($RegKey, $Kw, 'REG_SZ', $RegKw)
    ShutDown(0) ; so, jetzt noch abmelden --> zum neuen User..
    Msg('Wie konnte das passieren?', 'Ooops..', 64)
    EndIf

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

    Func Msg($What, $Title=$Author, $Icons=0, $ErrLevel=0)
    Local $RetWert=MsgBox($Icons, $Title, $What)
    If $ErrLevel Then Exit $ErrLevel
    Return $RetWert
    EndFunc
    ;</AutoItScript>

    [/autoit]

    Wenn es auf Anhieb nicht funktioniert, mußt du evtl. etwas nachdenken und in der Hilfe blättern..
    Das Script stattet sich selbst mit Adminrechten aus, vorausgesetzt, du gibst zulässige Daten ein..
    Ich selber benutze die Registry als Paßwortspeicher, allerdings unverschlüsselt, deshalb habe ich die betreffenden Teile aus dem Script entfernt, ich hoffe, es dient nicht nur als Studierobjekt und kann dir weiterhelfen..
    Gruß
    ytwinky
    P.S.
    Bedenke, daß kompilierte Skripte wie externe Kommandos behandelt werden..
    (Aber auch, um herauszufinden, ob ein Script kompiliert ist, bietet AutoIt eine Funktion)
    ..viel Spaß beim Stöbern^^

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • Hallo zusammen,


    ytwinky vielen Dank für den Script aber durch den User Wechsel unbrauchbar für
    mich.


    Ich schreib noch mal eben was ich genau machen möchte und zwar das im laufenden
    Betrieb im Abstand von 2-4Wochen dieser Script gestartet wird und dann eine
    Datei als Admin ausführt da der Standard-User nicht die benötigten rechte hat,
    das Ganze soll weites gehend unbemerkt ablaufen, daher ist ein User Wechsel
    leider nicht die Lösung für mich.


    Ich habe das ganze Jetzt mal so versucht mit 2 Dateien

    Code
    FileCopy("\\PFAD\DATEI.exe", "C:\Temp\")
    RunAs ("USER", "Domain", "PW", "4", "C:\Temp\Datei.exe")
    RunAs ("USER", "Domain", "PW", "4", "\\Pfad\Datei-Schleife.exe")


    Datei-Schleife

    Allerdings
    habe ich so das Problem das manchmal einfach die Schleife nicht ordentlich
    läuft und nicht tut was sie tun soll und manchmal läuft der erste Script in
    Schleife und öffnet mir unbegrenzt oft die Dateien, oder es funktioniert einfach :)


    Was ist daran falsch das er öfters dieses fehl verhalten an den Tag legt?
    Oder kann man das so gar nicht machen?

    Gruß