cmd mit Befehl als administrator aufrufen

  • Hi Leute,

    ich habe nun sehr viel gesucht und auch probiert, komme aber nciht zu meinen gewünschten Ergebnis.

    Ich möchte einen bestimmten Dienst mit net stop beenden. Das Problem ist, dass die cmd zum ausführen des Befehls als Admin gestartet haben muss.
    Natürlich nicht mit dem Bestätigunsfenster etc....

    wie kriege ich das hin?

    Kann mir bitte jemand helfen?
    Danke
    liebe Grüße 8)

  • Hast du ein Cmd-Fenster offen?`
    Wird das Cmd-Fenster von AutoIt aus gestartet?
    Oder rufst du den net stop-Befehl per Run(@ComSpec & " /c net stop ...") auf?

    Falls letzteres: Wenn dein AutoIt-Skript als Programm mit Admin-Rechten gestartet wurde, wird der net stop-Befehl ebenfalls mit Admin-Rechten ausgeführt.
    Ohne weitere Bestätigungsfenster.
    Das erreichst du in dem du @RequireAdmin an den Anfang des Skriptes schreibst.

    Alternativ kannst du auch RunAs() verwenden.

    Ohne UAC-Meldung wird es aber nicht gehen - entweder beim Aufrufen deines Skriptes oder beim Aufrufen des net stop-Befehles.

  • Viel Glück...
    Der Sinn von Admin ist ja, dass Programme das nicht einfach so bekommen. Da müsstest du die Sicherheitseinstellungen des Rechners ändern. (Mit Admin rechten.) Das wiederum ist natürlich auch nicht sicher.
    Ansonsten vielleicht als Systemprozess/dienst starten.
    Mit Adminrechten starten kann nur, was selbst Adminrechte hat.

  • ok, das stimmt

    also ich prüfe über einen vbs script bei der Anmeldung ob bestimmte Kriterien zutreffen.

    Dabei kann es sein das ein bestimmte Dienst (EndpointProtect (Backup für NB)) beendet werden muss um nicht aktiviert zu sein.
    Genau das bin ich seit einiger Zeit am suchen wie ich das machen kann und bin nun eben auf autoit gestoßen.

    Der Dienst nennt sich VeeamEndpointBackupSvc
    vbs mit
    For Each objService In colServices
    objService.StopService()
    Next
    klappt hier auch nciht, da ich eben zum beenden des Dienstes Administrationsrechte benötige.

    Hast Du eine Idee?

    Danke
    lg
    :)

  • Wenn du Adminrechte benötigst muss dein Skript auch mit Adminrechten gestartet werden.

    Wenn das Skript erst vom User aufgerufen wird kommst du schlicht nicht an einem UAC-Fenster vorbei.
    Wäre es möglich wäre das damit verbundene Sicherheitskonzept ja auch für'n Ar***.

    OT: Dein VB-Skript kann man auch 1:1 nach AutoIt übertragen:

    AutoIt
    #RequireAdmin
    
    
    Local $s_ServiceName = "VeeamEndpointBackupSvc"
    
    
    For $o_Service In ObjGet('winmgmts:\\localhost\root\CIMV2').ExecQuery('Select * From Win32_Service WHERE Name="' & $s_ServiceName & '"', "WQL", 48)
    	$o_Service.StopService()
    Next