2011-11-11 36 views
1

にあるとき、私は、実行中のプロセスだったかどうかを判断するためにctypes.windll.shell32.IsUserAdmin()は、ユーザが管理者グループ

ctypes.windll.shell32.IsUserAdmin()

を使用しようとしています1を返しませんAdminsグループのユーザーによって開始されましたが、矛盾した結果が表示されています。 Windows 7で

は、プロのインストール管理者ではなく、は、管理者グループの memebrであるユーザーとしてログインしたとき、私は

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

を取得しかし、ユーザーは、管理者グループです。

Administratorとしてログインすると、Windows Server 2008マシンで予想される回答が得られます。

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

誰が/持って、私は0ユーザーがadministartorsグループであるにもかかわらず、win7のボックスに返さ取得しています理由として任意のヒントを知っていますか?

  • ..

おかげで、

マットを問題は、ドメイン管理者/グループVS地元のいくつかの相互作用によって引き起こされる可能性があれば、私は疑問に思って、私の知識はせいぜい大ざっぱあります。

答えて

7

これはUACです。昇格した場合は、期待している動作が表示されます。しかし、UACの標準トークンでは、管理者権限を持っていません。

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

+0

ああ、乾杯。ちょうどあなたが言うように動作、ありがとう:) –

+0

素晴らしい。ちなみにここで回答を受け入れてアップアップするのは丁寧な考えです。私はあなたが比較的新しく、おそらくこれを知らないことに注意します。 [faq] –

関連する問題