2013-12-10 229 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\"") 

,或者您可以使用子