簡體   English   中英

確定當前用戶是否在Administrators組中(Windows / Python)

[英]Determine if current user is in Administrators group (Windows/Python)

我希望只有當前用戶是管理員才能訪問我的應用程序中的某些功能。

如何在Windows上使用Python確定當前用戶是否在本地Administrators組中?

你可以試試這個

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

當然在你的情況下'SOME_GROUP'將是'管理員'

我想給Vlad Bezden一些信任,因為沒有使用win32net模塊,這里的答案就不存在了。

如果您真的想知道用戶是否能夠在UAC之前充當管理員,您可以執行以下操作。 如果需要,它還會列出當前用戶所在的組。
它適用於大多數 (所有?) 語言設置
本地組只需要從“Admin”開始,它通常會......
(有人知道某些設置會有所不同嗎?)

要使用此代碼片段,您需要安裝pywin32模塊,如果您還沒有,可以從PyPI獲取它: pip install pywin32

知道的重要事項:
某些用戶/編碼人員可能很重要的是, os.getlogin()函數僅在Windows操作系統上的python3.1之后才可用... python3.1文檔

win32net參考

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.

哦, from time import sleep哪里from time import sleepsleep(10)

INSERT自己的導入/代碼......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM