使用Python进行子进程调用的问题

时间:2018-03-14 10:26:32

标签: python windows subprocess

如何通过子进程调用运行具有管理员权限的子进程?  例如:

subprocess.call(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe","Get-HotFix"])

我尝试了runASuser:Administrator而没有......

我需要使用带有python管理员权限的cmd执行以下命令。有没有人知道如何做到这一点?

sc config vss start=auto

我认为

subprocess.call((["runAS","user:Administrator","C\Windows\system32\cmd.exe","sc config vss start=auto"]))

但这不起作用。

1 个答案:

答案 0 :(得分:0)

使python代码调用Windows管理员权限

from __future__ import print_function
import ctypes, sys

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False
if is_admin():
    # The code to run is added here
else:
    if sys.version_info[0] == 3:
        ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
    else:#in python2.x
        ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)

如果您以非管理员权限运行它,则您已经运行了两次代码,第一次运行时,您没有管理员权限,第二次您具有管理员权限。

您可以参考以下文章: https://blog.csdn.net/qq_17550379/article/details/79006655