当用户在admins组中时,ctypes.windll.shell32.IsUserAdmin()不返回1

Mat*_*ren 2 python windows ctypes administrator

我正在尝试使用

ctypes.windll.shell32.IsUserAdmin()

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

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

>>> ctypes.windll.shell32.IsUserAnAdmin()
0
Run Code Online (Sandbox Code Playgroud)

但是该用户位于管理员组中.

当以管理员身份登录时,我在Windows Server 2008计算机上得到了预期的答案;

>>> ctypes.windll.shell32.IsUserAnAdmin()
1
Run Code Online (Sandbox Code Playgroud)

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

  • 我想知道问题是否可以由本地与域管理员/团队的某些互动引起,但我的知识充其量只是粗略的..

谢谢,

马特.

Dav*_*nan 10

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

对于特殊的管理员用户帐户,UAC不适用,并且该特殊用户下的进程始终被授予特权令牌.所以你看到的差异不在于操作系统,而在于用户.以Windows 7上的特殊管理员帐户登录,并查看其行为与Server 2008框的行为相同.