2

私は使用しようとしています

ctypes.windll.shell32.IsUserAdmin()

実行中のプロセスが管理者グループのユーザーによって開始されたかどうかを判断しますが、一貫性のない/不正確な結果が得られます。

Windows 7 Professional インストールで、管理者ではないが管理者グループのメンバーであるユーザーとしてログインすると、

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

しかし、ユーザーは管理者グループに属しています。

管理者としてログインすると、Windows Server 2008 マシンで期待どおりの回答が得られます。

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

ユーザーが管理者グループに属しているにもかかわらず、win7ボックスで0が返される理由について、誰かが知っている/ヒントを持っていますか?

  • ローカルとドメインの管理者/グループの相互作用によって問題が発生する可能性があるかどうか疑問に思っていますが、私の知識はせいぜい大ざっぱです..

ありがとう、

マット。

4

1 に答える 1

11

これはUACです。昇格して実行すると、期待する動作が表示されます。ただし、UACの標準トークンでは、管理者グループにいる場合でも、ユーザーには管理者権限がありません。

特別な管理者ユーザーアカウントの場合、UACは適用されず、その特別なユーザーの下のプロセスには常に特権トークンが与えられます。したがって、表示される違いはOSではなく、ユーザーにあります。Windows 7で特別な管理者アカウントとしてログオンし、サーバー2008ボックスと同じように動作することを確認します。

于 2011-11-11T14:30:41.723 に答える