получаю ошибку как pywinauto.приложение.AppStartError: Не удалось создать процесс «mmc printmanagement.msc»

#pywinauto

Вопрос:

Я пытаюсь открыть printmanagement.msc , используя приведенный ниже код. Но получаю ошибку.

Мой код:

 from pywinauto.application import Application
Application().start(r'mmc printmanagement.msc')
 

Ошибка:

 pywinauto.application.AppStartError: Could not create the process "mmc printmanagement.msc"
Error returned by CreateProcess: (740, 'CreateProcess', 'The requested operation requires elevation.')
 

Ответ №1:

Повышение означает «запуск от имени администратора». Вы должны запустить процесс Python от имени администратора (или вашей среды разработки, или cmd.exe перед началом python.exe в консоли). Родительский процесс для mmc.exe должен запускаться от имени администратора.

Другой способ разрешить автоматическое повышение (если Python не является привилегированным процессом):

 Application().start(r'cmd.exe /c mmc.exe printmanagement.msc', wait_for_idle=False)
 

А затем вам нужно подключиться к дочернему mmc.exe процессу таким образом.

 app = Application(backend='win32').connect(path='mmc.exe')
# or using backend="uia" whatever is better
 

Потому что процесс запуска cmd.exe завершается немедленно. pywinauto не может автоматически обнаруживать и обрабатывать порожденные дочерние процессы, но у нас есть запрос на такую функцию.

Комментарии:

1. Большое спасибо, сэр, теперь я могу запустить printmanagement.msc . Но теперь я получаю эту ошибку, pywinauto.application. ProcessNotFoundError: Процесс «mmc.exe» не найдено!. Как это решить?

2. Дополнительная информация: при подключении к дочернему процессу с помощью приложения = Приложение(серверная часть=’win32′).подключение(путь=’mmc.exe’), получаю ошибку-pywinauto.приложение. ProcessNotFoundError: Процесс «mmc.exe» не найдено!

3. Это потому, что mmc.exe выполняет самовосстановление. Поэтому запуск Python от имени администратора является обязательным. Кстати. если ответ правильный и он решает вашу проблему, пожалуйста, отметьте его как принятый (установите флажок «Серый» в левой части ответа). Это экономит время для других (не читая решенные проблемы) и мотивирует всех на будущие ответы.