You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下如何以管理员权限运行Python脚本并解决相关报错

Windows下Python脚本获取管理员权限运行的可行方案

两段测试代码的报错原因

  • 第一段admin相关代码报错:导入的admin模块要么未安装对应第三方包,要么安装了同名无关包,不存在isUserAdmin方法,且该第三方包维护极差,不推荐使用。
  • 第二段win32com代码报错:首先未安装pywin32依赖,其次代码存在逻辑问题:sys.exit(0)写在打印语句前,即使提权成功也不会执行后续逻辑,另外参数拼接未处理带空格的路径,大概率启动失败。

可直接落地的实现方案

方案1:零代码手动提权

  • 直接右键点击待运行的Python脚本/启动终端,选择「以管理员身份运行」即可,无需修改代码。
  • 如果通过命令行启动,先打开管理员权限的终端,再在终端内执行python 你的脚本文件名.py即可。

方案2:原生ctypes自动提权(无额外依赖,稳定性最高)

无需安装任何第三方包,直接调用Windows系统自带接口实现,无导入报错风险,复制即可使用:

import ctypes
import sys
import os

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if not is_admin():
    # 自动唤起UAC提权流程,重启当前脚本
    ctypes.windll.shell32.ShellExecuteW(
        None,
        "runas",
        sys.executable,
        " ".join([f'"{os.path.abspath(sys.argv[0])}"'] + [f'"{param}"' for param in sys.argv[1:]]),
        None,
        1
    )
    sys.exit(0)

# --------------------------
# 下方编写Metin2辅助脚本的业务逻辑,代码运行到此处时已持有管理员权限
print("已获取管理员权限,脚本正常运行")
# --------------------------

方案3:修复后的win32com版本

如果要使用win32com实现,先在终端执行命令安装依赖:
pip install pywin32
依赖安装完成后使用以下修正版代码,已修复路径空格解析、执行顺序错误的问题:

import os
import sys
import win32com.shell.shell as shell

ASADMIN = 'asadmin'

if sys.argv[-1] != ASADMIN:
    script_path = os.path.abspath(sys.argv[0])
    params = ' '.join([f'"{script_path}"'] + [f'"{arg}"' for arg in sys.argv[1:]] + [ASADMIN])
    shell.ShellExecuteEx(lpVerb='runas', lpFile=sys.executable, lpParameters=params)
    sys.exit(0)

# 提权成功后的业务逻辑编写在此处
print("已获取管理员权限,脚本正常运行")

注意:提权时系统会弹出UAC确认窗口,点击「是」即可完成提权;如果开启了UAC最高拦截等级,手动确认即可。

内容的提问来源于stack exchange,提问作者Eren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 10:24:20