【发布时间】:2017-04-12 13:04:39
【问题描述】:
试图在特定用户模式下运行某些 Windows 应用程序。通过命令后,它会要求输入密码。所以使用 proc.communicate() 传递密码但它不起作用,请帮助
from subprocess import Popen, PIPE
import time
cmd = "runas /user:administrator notepad.exe"
proc = Popen(cmd, stdout=PIPE, stdin=PIPE, stderr=PIPE)
print proc.stdout.read()
proc.communicate('password')
【问题讨论】:
-
也许见this 线程。另外,也许您需要在密码后发送
\n? -
按照@nbryans 的建议尝试过,但没有运气
-
您可以使用
WriteConsoleInput直接写入控制台输入缓冲区。也就是说,runas.exe有一个/savecred选项来使用保存的凭据。第一次提示输入密码。保存的凭据列在控制面板的凭据管理器中,因此原则上您可以通过CredWrite添加它们,这将允许仅在当前登录会话中保留它们,而不是永久保存在用户的保管库中。 -
为了更清楚一点,我正在尝试使用应用程序中的上述代码打开记事本,但它在记事本未打开的系统下启动(即使它第一次不要求我输入密码。 ) 尝试使用 /savecred,要求输入密码,但没有提示输入
-
应用是非交互服务会话中SYSTEM账户下运行的服务吗?
标签: python windows python-2.7 subprocess communicate