Python 3:如何使用subprocess.run()作为管理员(Windows 10)

问题描述 投票:0回答:1

我需要在Windows命令行中运行以下信息。有人帮助我处理了subprocess.run()的语法。我收到错误“ [WinError 5]访问被拒绝”,该错误可能需要管理员访问权限。如何以管理员身份使用subprocess.run()? [不在公司的PC上或其他任何设备上,我都可以访问管理员权限]

subprocess.run([
    r'"C:\Program Files\ANSYS Inc\ANSYS Student\v194\Framework\bin\Win64\runwb2"',
     '-B',
     '-F',
    r'E:\MEngA\Ansys\IFD_PartA_Rev3.wbpj',
     '-R',
    r'E:\MEngA\Results\sn07\script_partA.wbjn',
])

[如果有人以前这样做过,并且知道“ [WinError 5]访问被拒绝”与管理员权限无关,我也想听听!预先感谢。

编辑-我看过以下帖子(Run process as admin with subprocess.run in python),但没有发现它有太大帮助。我也阅读了Python doc(https://docs.python.org/3/library/subprocess.html),并没有感到启发。

编辑-我认为这更接近:

processjl = subprocess.Popen(['runas', '/noprofile', '/user:Joe', r'C:\Program Files\ANSYS Inc\ANSYS Student\v194\Framework\bin\Win64\runwb2'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
processjl.stdin.write(b'pass')
stdout, stderr = processjl.communicate()

但是作为回报,我得到:

Enter the password for Joe: \x00\r\n

有什么想法吗?我是一位机械工程师,正在学习python以自​​动执行一些有限元分析任务。我可以使用python进行数据工作,但是在理解这一点时遇到了麻烦。

python python-3.x subprocess
1个回答
1
投票

您快到了,但是您不能使用runas,因为它会提示您输入密码。您需要类似的内容,以允许您在命令行中提供密码,它是:

https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

下载此文件并安装在您的计算机中。然后您可以执行此操作以检查其是否有效

psexec.exe -u username -p password command_line_here

之后,您的命令很简单:

processjl = subprocess.Popen([
      'psexec.exe', '-u', 'username', '-p', 'password',
       r'C:\Program Files\ANSYS Inc\ANSYS Student\v194\Framework\bin\Win64\runwb2'
    ],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE)
stdout, stderr = processjl.communicate()
© www.soinside.com 2019 - 2024. All rights reserved.