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

时间:2010-03-15 15:46:24

标签: python windows administrator

我希望只有当前用户是管理员才能访问我的应用程序中的某些功能。

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

3 个答案:

答案 0 :(得分:6)

您可以尝试this

import ctypes
print ctypes.windll.shell32.IsUserAnAdmin()

答案 1 :(得分:1)

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'))

当然,在你的情况下,“SOME_GROUP”将是“管理员”

答案 2 :(得分:0)

我想对Vlad Bezden给予一些赞誉,因为没有使用win32net模块,这里的答案就不存在了。

如果您真的想知道用户是否有能力充当管理员过去的UAC ,您可以执行以下操作。如果需要,它还会列出当前用户所在的组。
它适用于大多数(所有?)语言设置
当地小组只是从" Admin"开始,它通常会... ...(有人知道某些设置会有所不同吗?)

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

重要提示:
对于某些用户/编码人员来说,函数os.getlogin()仅在Windows操作系统上的python3.1之后才可用,这一点很重要... python3.1 Documentation

win32net Reference

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.

哦和WHERE from time import sleepsleep(10)

INSERT自己的导入/代码......