2

我正在尝试使用

ctypes.windll.shell32.IsUserAdmin()

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

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

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

但是用户在管理员组中。

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

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

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

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

谢谢,

马特。

4

1 回答 1

11

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

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

于 2011-11-11T14:30:41.723 回答