确定当前用户是否在Administrators组(Windows/Python)中

确定当前用户是否在Administrators组(Windows/Python)中,python,windows,administrator,Python,Windows,Administrator,我希望应用程序中的某些功能仅在当前用户是管理员时才可访问 如何确定当前用户是否在Windows上使用Python的本地管理员组中?您可以尝试: 当然,在你的情况下,“某个小组”将是“管理员”我想给他一些信任,因为如果他不使用win32net模块,这个答案就不存在了 如果您真的想知道用户是否有能力在UAC之前担任管理员,您可以执行以下操作。如果需要,它还会列出当前用户所在的组它将适用于大多数(所有?语言设置本地组只需以“Admin”开头,它通常会这样做(是否有人知道某些设置是否会有所不同?) 要使

我希望应用程序中的某些功能仅在当前用户是管理员时才可访问

如何确定当前用户是否在Windows上使用Python的本地管理员组中?

您可以尝试:


当然,在你的情况下,“某个小组”将是“管理员”

我想给他一些信任,因为如果他不使用win32net模块,这个答案就不存在了

如果您真的想知道用户是否有能力在UAC之前担任管理员,您可以执行以下操作。如果需要,它还会列出当前用户所在的组
它将适用于大多数(所有?语言设置
本地组只需以“Admin”开头,它通常会这样做
(是否有人知道某些设置是否会有所不同?)

要使用此代码段,您需要安装
pywin32
模块, 如果您还没有,可以从PyPI获得它:
pip安装pywin32

需要了解的重要信息:
对于某些用户/程序员来说,函数
os.getlogin()
仅在Windows操作系统上的python3.1之后才可用可能很重要。。。

Oh和WHERE
从时间导入睡眠
睡眠(10)


插入自己的导入/code…

UAC激活时它不起作用,似乎此函数检查进程权限。
IsUserAnAdmin()
仅适用于Windows XP。它在以后版本的Windows上无法正常工作。
import ctypes
print ctypes.windll.shell32.IsUserAnAdmin()
import win32net


def if_user_in_group(group, member):
    members = win32net.NetLocalGroupGetMembers(None, group, 1)
    return member.lower() in list(map(lambda d: d['name'].lower(), members[0]))  


# Function usage
print(if_user_in_group('SOME_GROUP', 'SOME_USER'))
from time import sleep
import os
import win32net

if 'logonserver' in os.environ:
    server = os.environ['logonserver'][2:]
else:
    server = None

def if_user_is_admin(Server):
    groups = win32net.NetUserGetLocalGroups(Server, os.getlogin())
    isadmin = False
    for group in groups:
        if group.lower().startswith('admin'):
            isadmin = True
    return isadmin, groups


# Function usage
is_admin, groups = if_user_is_admin(server)

# Result handeling
if is_admin == True:
    print('You are a admin user!')
else:
    print('You are not an admin user.')
print('You are in the following groups:')
for group in groups:
    print(group)

sleep(10)

# (C) 2018 DelphiGeekGuy@Stack Overflow
# Don't hesitate to credit the author if you plan to use this snippet for production.