hmm: Mit Python eine CMD Anweisung als Admin ausführen

Hallo,

wenn ich unter Windows die CMD-Konsole als Admin ausführe, kann ich ein Kommando zum Auslesen von Datenbankeinträgen eingeben. Das funktioniert aber nur, wenn ich die Konsole im Adminmodus geöffnet hebe.

Ich kann mittels Python auch Befehle an die CMD schicken die dann ausgeführt werden. Nun möchte ich, mittels Python einen Befehl an die CMD schicken, welcher dann im Adminmodus ausgeführt werden soll.

Wie mache ich das? Es genügt wenn das Programm lokal bei mir auf dem Rechner (Windows 7 64 bit) läuft (eventuell kann ich eine passende systemvariable anlegen?).

mfg

  1. Tach!

    Nun möchte ich, mittels Python einen Befehl an die CMD schicken, welcher dann im Adminmodus ausgeführt werden soll. Wie mache ich das?

    Mit runas, würde ich meinen. Zu diesem Problem sollten ausreichend Anleitungen im Netz zu finden sein. "run as administrator" sollten als Suchwörter reichen.

    dedlfix.

    1. danke,

      wenn ich zumbeispiel wie hier beschrieben:

      http://stackoverflow.com/questions/16578597/how-to-executes-cmd-command-using-python-on-win-7-with-admin

      das mache:

      import subprocess
      subprocess.call(['runas', '/user:Administrator', 'dir'])
      

      öffnet sich die CMD-Kponsole und ich soll das Passwort für "Administrator" eingeben. Trag ich für "Administrator" meinen Loginnamen ein und das dazugehörige Passwort? Ich glaube das hatte ich mal getestet, hat aber leider nicht funktioniert (Antwort war 1).

      1. Tach!

        öffnet sich die CMD-Kponsole und ich soll das Passwort für "Administrator" eingeben. Trag ich für "Administrator" meinen Loginnamen ein und das dazugehörige Passwort?

        Wenn du Administrator-Rechte hast, dann ja. Ansonsten halt die Zugangsdaten von einem Administrator-Account. Aber ...

        Ich glaube das hatte ich mal getestet, hat aber leider nicht funktioniert.

        Ich bin vermutlich auch grad auf dem falschen Dampfer gewesen. runas hilft erstmal nur, wenn man etwas unter einem anderen User laufen lassen möchte. Also in deinem Fall, wenn du mit einem Nicht-Administrator-Konto unterwegs bist. Aber selbst als Administrator kann man nicht alles tun, wenn man nicht wie Majestix oben auf dem Schild steht. "elevated" heißt hierzu das passende Stichwort. Das gibts wohl nicht direkt sondern nur in der Powershell oder als separates Tool. Siehe beispielsweise da: http://superuser.com/questions/55809/how-to-run-program-from-command-line-with-elevated-rights.

        dedlfix.

      2. Hallo

        wenn ich zumbeispiel wie hier beschrieben das mache:

        import subprocess
        subprocess.call(['runas', '/user:Administrator', 'dir'])
        

        öffnet sich die CMD-Kponsole und ich soll das Passwort für "Administrator" eingeben. Trag ich für "Administrator" meinen Loginnamen ein und das dazugehörige Passwort?

        Um dich als Nutzer mit dem Namen „Administrator“ anzumelden, sollte er auf der Maschine existieren und du solltest dessen Benutzerdaten eintragen. Allerdings beraubst du dich mit dem obigen Code der Möglichkeit der Automatisierung, da du ja immer das Passwort eingeben musst.

        In einer anderen Stackoverflow-Frage wird mit einem speziell für Windows gedachten Modul namens subprocesswin32 gearbeitet. Sieh dir die letzte Antwort an. Es werden zuerst die Anmeldedaten in der Variable sysuser abgelegt, die dann dem eigentlichen Prozessaufruf hinzugefügt wird. Probiert habe ich es selbst nicht, es sieht aber auf den ersten Blick schlüssig aus.

        Tschö, Auge

        1. hm, danke.

          ich hab kein modul namens "subprocesswin32" auf dem rechner und "easy_install subprocesswin32" hat auch nichts gebracht. wie bekomme ich diese bib?

          ich kenne das Passwort des admin nicht, ist das ein Problem? ich kenne mein eigenes Passwort und kann die console manuell im adminmodus starten. mit welchem Passwort und usernamen sollte ich das ausprobieren?

          1. Hallo

            ich hab kein modul namens "subprocesswin32" auf dem rechner und "easy_install subprocesswin32" hat auch nichts gebracht. wie bekomme ich diese bib?

            Soweit ich das in den Suchergebnissen sehe, ist das Modul „subprocesswin32“ Teil von pywin32 [1]. Lade die für deine Python-Version passende Installationsroutine herunter, führe die sie aus und teste das Modul.

            ich kenne das Passwort des admin nicht, ist das ein Problem?

            Warum nicht? Du könntest zwar einen weiteren Benutzer mit Adminrechten anlegen, Ich würde das aber, wenn es denn geht, vermeiden wollen.

            ich kenne mein eigenes Passwort und kann die console manuell im adminmodus starten. mit welchem Passwort und usernamen sollte ich das ausprobieren?

            Wenn du für das Programm, welches du auszuführen gedenkst, Adminrechte brauchst, brauchst du einen Benutzer, der die hat. Wenn dein eigener Benutzer, um Adminrechte zu erlangen, Dialoge bedienen muss und das vermutlich nicht das ist, was beim Programmaufruf passieren soll, ist dieser Benutzer ungeeignet.

            Tschö, Auge

            --
            Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
            Wolfgang Schneidewind *prust*

            1. Der Link geht auf die momentan aktuellste Version aus dem Januar 2016. ↩︎