Python 程序检查是否具有管理员权限(不是则请求权限重启)

最近更新于 2024-12-10 15:00

Table of Contents

测试环境

Windows 11 23H2
Python 3.13.1

实现

import sys
import ctypes

def isAdmin():
    '''
    检查当前用户是否具有管理员权限

    Returns:
        bool: 如果当前用户具有管理员权限,则返回True,否则返回False
    '''
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

def runAsAdmin():
    '''
    以管理员身份运行程序

    Returns:
        bool: 如果成功以管理员身份运行,则返回True,否则返回False
    '''
    if isAdmin():
        print("已经以管理员身份运行。")
        return True
    else:
        print("未以管理员身份运行,正在请求提升权限。")
        try:
            params = ' '.join([sys.executable] + sys.argv)
            ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, params, None, 1)
            return True
        except:
            print("请求提升权限失败。")
            return False

if __name__ == "__main__":
    if runAsAdmin():
        print("现在正在以管理员身份运行。")
    else:
        print("无法以管理员身份运行。")

file

file

file

Python 程序检查是否具有管理员权限(不是则请求权限重启)
Scroll to top