python 以管理员权限调用cmd命令

本文介绍如何在Python中通过创建批处理文件和VBS脚本来以管理员权限执行CMD命令,包括步骤一:将CMD命令写入批处理文件;步骤二:创建VBS脚本以管理员身份运行;步骤三:使用Python调用这些脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,将要执行的cmd命令放到xx.bat文件里

二,创建shell.vbs使系统以管理员权限运行

cwd = CreateObject("Scripting.FileSystemObject").GetFile(Wscript.ScriptFullName).ParentFolder.Path
path = cwd & "\RestartInternet.bat"
 
Set shell = CreateObject("Shell.Application")
shell.ShellExecute path,"","","runas",1
 
WScript.Quit

三,python调用

# !/usr/bin/python3
# coding: utf-8
import os
import subprocess
import traceback
 
 
def runAdmin(cmd, timeout=1800000):
    # 这一段是将要执行的cmd命令写入.bat, 如果已经有创建好的.bat, 则这一段可以注释掉
    f = None
    try:
        bat = os.getcwd() + r"\RestartInternet.bat"
        f = open(bat, 'w')
        f.write(cmd)
    except Exception as e:
        traceback.print_exc()
        raise e
    finally:
        if f:
            f.close()
 
    try:
        shell = os.getcwd() + r"\shell.vbs"
        sp = subprocess.Popen(
            shell,
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE
        )
        print("[PID] %s: %s" % (sp.pid, cmd))
        sp.wait(timeout=timeout)
 
        stderr = str(sp.stderr.read().decode("gbk")).strip()
        stdout = str(sp.stdout.read().decode("gbk")).strip()
        if "" != stderr:
            raise Exception(stderr)
        if stdout.find("失败") > -1:
            raise Exception(stdout)
    except Exception as e:
        raise e

### 如何以管理员权限执行 Python 脚本 为了确保Python脚本能够在Windows系统下以管理员权限运行,可以通过多种方法实现这一目标。以下是几种常用的技术方案: #### 方法一:使用 `runas` 提升权限 一种简单的方式是在启动Python解释器时利用命令提示符中的`runas`指令来请求提升权限。 ```batch runas /user:Administrator "C:\Path\To\Your\python.exe your_script.py" ``` 这种方法会在每次执行前弹出UAC(用户账户控制)对话框询问确认[^3]。 #### 方法二:创建快捷方式并设置为始终以管理员身份运行 对于经常使用的脚本,可以为其创建桌面或其他位置上的快捷方式,在属性中勾选“以管理员身份运行”。当点击此快捷方式启动程序时就会自动获得所需权限。 #### 方法三:编写批处理文件配合VBS脚本来触发UAC提示 如果希望更灵活地控制何时以及如何显示UAC窗口,则可以在Python代码内部调用由Visual Basic Script编写的.vbs脚本来进行权限升级操作。 下面给出一段简单的VBScript例子用于展示这种机制的工作原理: ```vbscript Set UAC = CreateObject("Shell.Application") UAC.ShellExecute "cmd.exe", "/c C:\Path\To\Your\python.exe your_script.py", "", "runas", 1 ``` 保存上述内容到`.vbs`文件后即可作为外部工具被Python进程调用来发起权限请求[^5]。 #### 方法四:通过任务计划程序安排定期任务 对于那些需要周期性或按条件触发的任务来说,还可以考虑借助Windows自带的任务计划功能。配置好相应的参数之后,即使当前登录用户的权限不足也能顺利按照设定的时间表完成指定动作[^4]。 需要注意的是,无论采用哪种手段都应谨慎对待涉及敏感信息的操作,并遵循最小特权原则仅授予必要的访问级别给应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值