跨平台检查Windows下Python脚本的管理员权限方法?

28 投票
5 回答
24604 浏览
提问于 2025-04-15 12:25

有没有一种跨平台的方法可以检查我的Python脚本是否以管理员权限运行?很遗憾,os.getuid()这个方法只适用于UNIX系统,在Windows上是无法使用的。

5 个回答

4

试着去做你需要管理员权限的事情,然后看看是否失败了。

不过,这种方法只对某些事情有效,你到底想做什么呢?

13

这是我根据被接受的答案创建的一个工具函数:

import os
import ctypes

class AdminStateUnknownError(Exception):
    """Cannot determine whether the user is an admin."""
    pass


def is_user_admin():
    # type: () -> bool
    """Return True if user has admin privileges.

    Raises:
        AdminStateUnknownError if user privileges cannot be determined.
    """
    try:
        return os.getuid() == 0
    except AttributeError:
        pass
    try:
        return ctypes.windll.shell32.IsUserAnAdmin() == 1
    except AttributeError:
        raise AdminStateUnknownError
68
import ctypes, os
try:
 is_admin = os.getuid() == 0
except AttributeError:
 is_admin = ctypes.windll.shell32.IsUserAnAdmin() != 0

print is_admin

当然可以!不过你没有提供具体的内容,我无法进行翻译。请把你想要翻译的StackOverflow内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答