Python中如何让subprocess启动的子进程不继承管理员权限
Windows管理员权限Python脚本降权启动子进程解决方案
以下两种方案都不会改变原有Python脚本的管理员权限,仅对子进程生效:
方案1:通过explorer.exe间接启动(轻量方案)
Windows系统中explorer.exe默认以当前登录用户的普通权限运行,管理员进程通过explorer启动目标程序时,会自动继承explorer的普通权限,无需额外依赖。
实现代码
import subprocess import os # 优先获取目标程序绝对路径,避免相对路径解析错误 subscript_path = os.path.abspath("subscript.exe") # 路径包含空格时需要用双引号包裹 launch_cmd = f'explorer.exe "{subscript_path}"' test_process = subprocess.Popen(launch_cmd, shell=True)
优缺点
- 优点:实现简单,无需额外安装依赖,适配绝大多数Windows场景
- 缺点:无法直接捕获子进程的标准输入输出、退出码,explorer进程未运行时会失效
方案2:调用Windows API创建普通权限进程(可控方案)
适合需要对子进程进行生命周期管理、IO交互的场景,需要依赖pywin32库调用系统接口。
前置依赖
运行前先安装依赖包:pip install pywin32
实现代码
import os import win32api import win32con import win32process import win32security def create_low_privilege_process(exe_path: str): # 获取桌面shell进程(默认是explorer)的权限令牌 shell_hwnd = win32api.GetShellWindow() _, shell_pid = win32process.GetWindowThreadProcessId(shell_hwnd) shell_handle = win32api.OpenProcess( win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_DUP_HANDLE, False, shell_pid ) shell_token = win32security.OpenProcessToken( shell_handle, win32con.TOKEN_DUPLICATE | win32con.TOKEN_ASSIGN_PRIMARY | win32con.TOKEN_QUERY ) # 复制普通权限令牌用于创建新进程 user_token = win32security.DuplicateTokenEx( shell_token, win32security.SecurityImpersonation, win32con.TOKEN_ALL_ACCESS, win32security.TokenPrimary, None ) # 用普通权限令牌启动进程 startup_info = win32process.STARTUPINFO() startup_info.cb = startup_info.sizeof() process_info = win32process.CreateProcessAsUser( user_token, exe_path, None, None, None, False, win32con.CREATE_NEW_CONSOLE, None, os.path.dirname(exe_path), startup_info ) return process_info # 调用示例 subscript_path = os.path.abspath("subscript.exe") test_process_info = create_low_privilege_process(subscript_path) # 可通过test_process_info获取进程ID、句柄,用于后续管理
优缺点
- 优点:可以自由控制子进程启动参数,支持捕获IO、获取退出码,不依赖explorer运行状态,可靠性高
- 缺点:需要额外安装第三方依赖,仅支持Windows系统
注意事项
- 如果
subscript.exe本身配置了自动提权的manifest属性,启动时仍会弹出UAC提权提示,需要修改目标程序的manifest配置关闭自动提权 - 目标路径存在空格时,必须用双引号包裹路径,避免解析异常
内容的提问来源于stack exchange,提问作者Bored002
相关产品推荐
相关产品推荐

