Функция подпроцесса пропускает ввод пароля и выходит из программы - PullRequest
0 голосов
/ 25 января 2019

Я вызываю subprocess.run для выполнения внешней программы снаружи.Однако программе требуются права администратора, я запускаю программу с правами администратора, но консоль python запрашивает пароль, но не позволяет ввести пароль и выходит из программы.

Я пытался использовать subprocess.popen и subprocess.call, я также пытался запустить программу без прав администратора, но pycharm выдает мне операцию, требующую ошибки повышения прав.

def runExecutables():
    directory = r"C:\Users\Billy\Desktop\SURVEY_PROGRAM_WINDOWS_ENGLISH.exe"
    #subprocess.Popen(directory)

    subprocess.run(['runas', '/user:Administrator', directory])
    #prog.stdin.write(b'password')
    #prog.communicate()

Я должен ожидать, что запускается исполняемый файл илипоявляется запрос о вводе пароля, подтверждающий, что исполняемый файл действительно запущен.Я просто получаю приглашение Python для ввода пропуска для администратора, и мне не нужно вводить пароль перед завершением процесса.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Я избежал этой проблемы, приблизившись к ней с помощью командной строки, а не используя подпроцесс.

def runExecutables():
     os.system(r"start C:\Users\Mastodon\Desktop\SURVEY_PROGRAM_WINDOWS_ENGLISH.exe")

Использование командной строки устраняет некоторые проблемы, которые может вызвать подпроцесс. Мне неясно, каковы преимущества использования подпроцесса.

0 голосов
/ 25 января 2019

С Popen вы должны передать в stdin и очистить ввод

import subprocess

p = subprocess.Popen(['runas', '/user:Administrator', 'calc.exe'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
p.stdin.write(b'YourPassword\n')
p.stdin.flush()
stdout, stderr = p.communicate()
print("-----------")
print(stdout)
print("-----------")
print(stderr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...