在Python中将管理员权限设置为subprocess.check_call()

时间:2013-12-10 21:43:11

标签: python windows

我从python脚本调用两个可执行文件,一个需要管理员权限,另一个不需要管理员权限。有没有办法在执行可执行文件之前设置管理员权限,以便它不会要求我输入密码。

我的脚本如下

import subprocess

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

我尝试通过启动cmd以管理员身份运行来从cmd运行此脚本。有没有办法将这些管理员权限传递给第二个可执行文件,以便它可以正常工作

2 个答案:

答案 0 :(得分:2)

我发现了一个讨厌的解决方法

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

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

或者您可以使用子流程

答案 1 :(得分: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

runas - http://technet.microsoft.com/en-us/library/cc771525.aspx

如果这样做将取决于程序NeedsAdminPrivilege。