Модуль Python 2.7 подпроцесса: «Ошибка Windows: [Ошибка 5] Доступ запрещен» - PullRequest
0 голосов
/ 12 апреля 2019

Я делаю небольшой скрипт для запуска команд, позволяющих пользователю взаимодействовать с подчиненным. Мой пользователь - администратор, но мой скрипт сообщает мне, что доступ запрещен. Я пробовал другой путь с другим процессом, но ничего не работает. Я ученик, поэтому я учусь, и я действительно не понимаю, где моя ошибка ^^ "" вот мой сценарий:

def CallDeadlineCommand(arguments, background=True, readStdout=True):
    deadlineCommand = GetDeadlineCommand()

    startupinfo = None
    creationflags = 0
    if os.name == 'nt':
        if background:
            # Python 2.6 has subprocess.STARTF_USESHOWWINDOW, and Python 2.7 has subprocess._subprocess.STARTF_USESHOWWINDOW, so check for both.
            if hasattr(subprocess, '_subprocess') and hasattr(subprocess._subprocess, 'STARTF_USESHOWWINDOW'):
                startupinfo = subprocess.STARTUPINFO()
                startupinfo.dwFlags |= subprocess._subprocess.STARTF_USESHOWWINDOW
            elif hasattr(subprocess, 'STARTF_USESHOWWINDOW'):
                startupinfo = subprocess.STARTUPINFO()
                startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
        else:
            # still show top-level windows, but don't show a console window
            CREATE_NO_WINDOW = 0x08000000  # MSDN process creation flag
            creationflags = CREATE_NO_WINDOW

    arguments.insert(0, deadlineCommand)

    stdoutPipe = None
    if readStdout:
        stdoutPipe = subprocess.PIPE

    # Specifying PIPE for all handles to workaround a Python bug on Windows. The unused handles are then closed immediatley afterwards.
    proc = subprocess.Popen(arguments, stdin=subprocess.PIPE, stdout=stdoutPipe, stderr=subprocess.PIPE,
                            startupinfo=    startupinfo, creationflags=creationflags)
    proc.stdin.close()
    proc.stderr.close()

    output = ""
    if readStdout:
        output = proc.stdout.read()
    return output

Моя команда, которая вызывает функцию:

CallDeadlineCommand([" RemoteControl ", str(computer_name()), " ForceStopSlave"])

и он возвращает мне эту полную ошибку:

Traceback (most recent call last):
  File "C:/Users/francois.CIRCUS/PycharmProjects/DeadlineMiniMonitor/mini_uimw.py", line 455, in change_value
    self.kill_deadlineslave()
  File "C:/Users/francois.CIRCUS/PycharmProjects/DeadlineMiniMonitor/mini_uimw.py", line 538, in kill_deadlineslave
    CallDeadlineCommand([" RemoteControl ", str(computer_name()), " ForceStopSlave"])
  File "C:/Users/francois.CIRCUS/PycharmProjects/DeadlineMiniMonitor/mini_uimw.py", line 680, in CallDeadlineCommand
    startupinfo=startupinfo, creationflags=creationflags)
  File "C:\Python27\Lib\subprocess.py", line 394, in __init__
    errread, errwrite)
  File "C:\Python27\Lib\subprocess.py", line 644, in _execute_child
    startupinfo)
WindowsError: [Error 5] Access is denied

Спасибо, лучшее,

Pixi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...