Seite 1 von 1

Vista UAC mit subprocess?

Verfasst: Mittwoch 12. November 2008, 12:09
von jens
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.

Re: Vista UAC mit subprocess?

Verfasst: Mittwoch 12. November 2008, 12:53
von gerold
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
:-)

Verfasst: Mittwoch 12. November 2008, 14:05
von jens
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.

Verfasst: Mittwoch 12. November 2008, 14:27
von lunar
Dafür musst du die winapi nutzen, über die stdlib geht das nicht.

Verfasst: Mittwoch 12. November 2008, 19:05
von Qubit
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.

Verfasst: Donnerstag 13. November 2008, 09:53
von jens
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 --

Verfasst: Donnerstag 13. November 2008, 12:13
von Mad-Marty
lunar hat geschrieben:Dafür musst du die winapi nutzen, über die stdlib geht das nicht.
Seit ctypes im standard ist, geht es bestimmt ;-)