【问题标题】:ctypes.windll.shell32.IsUserAdmin() not returning 1 when user is in admins group当用户在管理员组中时,ctypes.windll.shell32.IsUserAdmin() 不返回 1
【发布时间】:2011-12-27 01:37:42
【问题描述】:

我正在尝试使用

ctypes.windll.shell32.IsUserAdmin()

确定正在运行的进程是否由管理员组中的用户启动,但我得到的结果不一致/不正确。

在 Windows 7 Professional 安装中,当以不是管理员但管理员组成员的用户身份登录时,我得到

>>> ctypes.windll.shell32.IsUserAnAdmin()
0

但用户在 admins 组中。

当我以管理员身份登录时,我在 windows server 2008 机器上得到了预期的答案;

>>> ctypes.windll.shell32.IsUserAnAdmin()
1

是否有人知道/有任何提示我为什么在 win7 框上返回 0,即使用户在 administartors 组中?

  • 我想知道这个问题是否可能是由本地与域管理员/组的某些交互引起的,但我对此的了解充其量只是粗略..

谢谢,

马特。

【问题讨论】:

    标签: python windows ctypes administrator


    【解决方案1】:

    这是 UAC。如果您运行提升,您将看到您期望的行为。但是使用 UAC 下的标准令牌,您的用户没有管理员权限,即使在管理员组中也是如此。

    对于特殊管理员用户帐户,UAC 不适用,并且该特殊用户下的进程始终获得特权令牌。因此,您看到的区别不在于操作系统,而在于用户。在 Windows 7 上以特殊管理员帐户登录,看看它的行为与 server 2008 框一样。

    【讨论】:

    • 太棒了。顺便说一句,在这里接受和赞成答案被认为是礼貌的。我注意到你是相对较新的人,也许没有意识到这一点。见faq
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多