2013-12-10 196 views
0

我从一个需要管理员权限的python脚本和一个不需要它们的脚本调用两个可执行文件。在执行可执行文件之前,我可以通过哪种方式设置管理员权限,以便它不要求我输入密码。将管理员权限设置为Python中的subprocess.check_call()

我的脚本如下

import subprocess 

subprocess.check_call(['DoesnotNeedAdminPrivilege.exe']) 
subprocess.check_call(['NeedsAdminPrivilege.exe']) 

我试图通过启动CMD作为一个管理员联系运行从运行CMD此脚本。有没有办法将这些管理权限传递给第二个可执行文件,以便它可以正常工作

+1

你可以运行管理员权限的初始蟒蛇电话时,输入只需运行时间之前的凭据? – JonathanV

+1

subprocess.check_call(['runas','/ noprofile','/ user:Administrator','NeedsAdminPrivilege.exe'])? – John1024

+0

我想将这个.py文件转换成.exe文件。所以我只想以管理员身份运行这个转换后的.exe文件,这应该会导致第二个子流程调用以管理员身份运行。这甚至有可能吗? –

回答

1

试试这个输入管理密码。

import subprocess as sp 

sp.check_call(['DoesnotNeedAdminPrivilege.exe']) 
prog = sp.Popen(['runas', '/noprofile', '/user:Administrator', 'NeedsAdminPrivilege.exe'],stdin=sp.PIPE) 
prog.stdin.write('password') 
prog.communicate() 

下面是关于文档:

POPEN - http://docs.python.org/2/library/subprocess.html#popen-constructor

运行方式 - http://technet.microsoft.com/en-us/library/cc771525.aspx

,如果这个工程将取决于程序NeedsAdminPrivilege。

+0

我会更好,如果我不必输入密码..有没有办法避免让用户把密码? –

+0

谈到你的问题中的代码:如果你首先使用admin priv创建脚本,那么两个孩子都应该得到Admin priv的是否需要他们。所以......你能回答JonathanV的问题吗?所有其他的答案是一个黑客(运行我的答案或关闭UAC) – Back2Basics

+0

@ Back2Basics,我试图让这段代码没有成功的工作。你确定它有效吗? – McLeary

0

我找到了一个解决办法讨厌

f = open('test.cmd', 'w+') 
    f.write("execute.exe") 
    f.close() 

    os.system("runas /savecred /profile /user:Administrator \"test.cmd\"") 

,或者您可以使用子