특정 사용자 모드에서 일부 Windows 응용 프로그램을 실행하려고합니다. 명령을 전달한 후 암호를 묻습니다. 그래서 proc.communicate()를 사용하여 암호를 건네 주면 도움이됩니다.python을 사용하여 명령 프롬프트에서 사용자 이름 뒤에 암호를 보내는 방법
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')
아마도 [이] (http://stackoverflow.com/questions/30238840/run-program-from-command-line-what-prompts-password-and 참조 --automatically-provide-pa? rq = 1) 스레드. 또한 암호 뒤에'\ n'을 보낼 필요가 있을까요? – nbryans
@nbryans에 의해 제안되었지만 행운은 없습니다. – user3872486
['WriteConsoleInput'] (https://msdn.microsoft.com/en-us/library/ms687403)를 사용하여 콘솔 입력 버퍼에 직접 쓸 수 있습니다. 즉,'runas.exe'는 저장된 자격 증명을 사용하는'/ savecred' 옵션을 가지고 있습니다. 처음 암호를 묻는 메시지가 나타납니다. 저장된 자격 증명은 제어판의 자격 관리자에 표시되므로 원칙적으로 ['CredWrite'] (https://msdn.microsoft.com/en-us/library/aa375187)를 통해 추가 할 수 있습니다. 사용자의 볼트에 영구적으로 존재하는 것이 아니라 현재의 로그온 세션에만 적용됩니다. – eryksun