Vista UAC mit subprocess?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 12. November 2008, 12:09

Weiß jemand wie man ein Prozess als Admin unter Vista starten kann?

Ich denke die Stichworte sind "System::Diagnostics::Process" siehe:
http://en.wikipedia.org/wiki/User_Accou ... _elevation

Ich konnte aber kein Beispiel finden.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 12. November 2008, 12:53

jens hat geschrieben:Weiß jemand wie man ein Prozess als Admin unter Vista starten kann?
Hallo jens!

Vielleicht gibt es unter Vista noch das Kommandozeilenprogramm "RUNAS". Wenn Ja, dann haben die das vielleicht so angepasst, dass man damit Admin-Rechte bekommt.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 12. November 2008, 14:05

Ja, das gibt es. Allerdings funktioniert das etwas anders. Mit runas startet man ja ein Programm unter einem anderen Usernamen. Ich möchte aber nur die Rechte ändern.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
lunar

Mittwoch 12. November 2008, 14:27

Dafür musst du die winapi nutzen, über die stdlib geht das nicht.
Qubit
User
Beiträge: 75
Registriert: Dienstag 7. Oktober 2008, 09:07

Mittwoch 12. November 2008, 19:05

jens hat geschrieben:Ja, das gibt es. Allerdings funktioniert das etwas anders. Mit runas startet man ja ein Programm unter einem anderen Usernamen. Ich möchte aber nur die Rechte ändern.
Eine Möglichkeit wäre, für einen bestimmten Admin-Account den UAC in der lokalen "Scurity Policy" über "Elevation" quasi zu deaktivieren und die Prozesse unter diesem User zu fahren.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 13. November 2008, 09:53

Hm. Das sagt mir jetzt nix ;)

Also es sollte nicht so schwer sein. Auf der Seite http://en.wikipedia.org/wiki/User_Accou ... _elevation gibt es Beispielcode in C++/CLI:

Code: Alles auswählen

System::Diagnostics::Process^ proc = gcnew System::Diagnostics::Process();
proc->StartInfo->FileName = "C:\\Windows\\system32\\notepad.exe";
proc->StartInfo->Verb = "runas"; // Elevate the application
proc->Start();
So geht's aber nicht:

Code: Alles auswählen

import subprocess, win32con

startupinfo = subprocess.STARTUPINFO()
startupinfo.Verb = "runas"

subprocess.Popen(
    ["net", "start", "TlntSvr"],
    startupinfo=startupinfo
).wait()

print "-- END --"
Es kommt:
Systemfehler 5 aufgetreten.

Zugriff verweigert

-- END --

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Donnerstag 13. November 2008, 12:13

lunar hat geschrieben:Dafür musst du die winapi nutzen, über die stdlib geht das nicht.
Seit ctypes im standard ist, geht es bestimmt ;-)
Antworten