2011-01-10 12 views
4

Ich beginne das folgende Skript von einem Zeilenbefehl Windows 7 mit Administrator-Rechten:Python: Wie starte ich einen Prozess mit Administratorberechtigungen?

import win32com.client 
import time 
import SendKeys 
import os 
from ctypes import * 

shell = win32com.client.Dispatch("WScript.Shell") 

os.startfile("C:\...exe") 

ich auch die Funktion ‚Führen Sie dieses Programm als Administrator‘ zugewiesen habe unter Eigenschaften> Kompatibilität> Berechtigungsebene python.exe . Das hat nichts geändert.

Das Programm verhält sich immer noch anders, wenn es auf diese Weise geöffnet wird, wie es sich verhält, wenn ich es nur durch einen Doppelklick auf dem Bildschirm öffne. Fehle ich hier ein wichtiges Stück? Wird der auf diese Weise aufgerufene Prozess nicht wie mit Administratorrechten gestartet ausgeführt?

Vielen Dank für Ihre Hilfe im Voraus!

Beifall -

Pat

+0

Mögliche Duplikate von [So führen Sie Python-Skript mit erhöhten Rechten auf Windows] (http://StackOverflow.com/questions/19672352/how-to-run-python-script-with-elevated-privilege-on-windows) –

Antwort

2

Ich habe keinen Zugriff auf Vista oder Windows 7, aber Sie sollten Lage sein, den runas Befehl zu verwenden.

import subprocess 
subprocess.call(['runas', '/user:Administrator', 'C:/my_program.exe']) 
+4

Danke, Chinmay ... Ich habe es versucht und wurde von der Python-Shell zur Eingabe des Administratorkennworts aufgefordert. Wenn ich das richtige Passwort eingegeben habe, wurde es als LOGIN FAILURE abgelehnt. Ich habe das mehrmals gemacht, um sicher zu sein, dass ich keinen Fehler bei der Eingabe meines Passworts gemacht habe. Ich verstehe wirklich nicht, was vor sich geht. Außerdem verstehe ich nicht, warum ich den Subprozess so starten müsste, wenn ich das Skript von einer Administrator-Shell aus starte. Kannst du mir helfen, das zu verstehen? – pat

+0

@pat Ereignis, obwohl ich den Thread ein wenig wieder beleben, der Grund, warum Sie nicht anmelden konnten, ist, weil Administrator wahrscheinlich nicht der Benutzer ist, den Sie verwenden möchten ... sollten Sie versuchen: '/ user: [[dommainName ] \\] userName'' – Xeltor

+0

Dies ist eine nützliche Lösung, aber ich denke, es fehlt der Teil, in den Sie auf stdin schreiben, wie der Benutzer Back2Basics hier zeigt: http://stackoverflow.com/questions/20505893/set- Administrator-Privilegien-zu-Subprozess-Check-Call-in-Python – LastTigerEyes

0

OK ... Ich habe herausgefunden, was das Problem war. Mit Genehmigungen hatte es eigentlich nichts zu tun, entgegen meinem anfänglichen Verdacht. Das tut mir leid!

Der Grund, warum die Anwendung nicht richtig funktionierte, lag daran, dass das Python-Skript in einem anderen Verzeichnis gefunden und aufgerufen wurde. Aus diesem Grund wurden einige Abhängigkeiten der Anwendung nicht korrekt referenziert, und einige der Dateien, die für die ordnungsgemäße Ausführung benötigt werden, konnten nicht gefunden werden. Das Verschieben des Python-Skripts in dasselbe Verzeichnis wie die aufgerufene Anwendung war eine Möglichkeit, dies zu beheben.

Entschuldigung nochmal für die irreführende anfängliche Interpretation dessen, was zu sein schien.