2011-11-11 23 views
1

我想使用ctypes.windll.shell32.IsUserAdmin()沒有返回1,當用戶在管理員組

ctypes.windll.shell32.IsUserAdmin()

,以確定是否正在運行的進程由Admins組中的用戶啓動,但我得到不一致/不正確的結果。

在Windows 7專業的安裝,因爲這是不是管理員,但管理員組的memebr用戶登錄時,我得到

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

但用戶是管理員小組。

以管理員身份登錄時,我在Windows Server 2008計算機上得到預期的答案;

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

有誰知道/有任何暗示,爲什麼我收到的WIN7框返回0,即使用戶是administartors組?

  • 我想知道如果這個問題可以通過本地VS域管理員/組一些相互作用引起的,但我的知識,充其量有粗略..

感謝,

馬特。

回答

7

這是UAC。如果你運行提升,你會看到你期望的行爲。但是,對於UAC下的標準令牌,即使在管理員組中,用戶也沒有管理員權限。

對於特殊的管理員用戶帳戶,UAC不適用,並且該特殊用戶下的進程始終被授予特權令牌。所以你看到的差異不在於操作系統,而在於用戶。在Windows 7上以特殊管理員帳戶身份登錄並看到它的行爲與服務器2008盒一樣。

+0

啊,歡呼聲。正如你所說,謝謝:) –

+0

太好了。順便說一句,在這裏接受並讚揚答案被認爲是有禮貌的。我注意到你是相對較新的,也許沒有意識到這一點。看到[faq] –

相關問題