2008-09-09 142 views

回答

2

我不知道關於.NET,但在Win32中,最簡單的方法是調用IsUserAnAdmin()。如果您需要更多的控制,你可以打開進程令牌與CheckTokenMembership爲每個需要檢查

編輯組檢查:pinvoke.net爲.NET代碼示例(感謝chopeen)

1

你可以循環組就像我在這個答案做:

Determining members of local groups via C#

閱讀一些後,最簡單的事情將是使用System.DirectoryServices.AccountManagement命名空間。下面是它如何被使用:

http://www.leastprivilege.com/SystemDirectoryServicesAccountManagement.aspx

樣品:

public static bool IsUserInGroup(string username, string groupname, ContextType type) 
{ 
    PrincipalContext context = new PrincipalContext(type); 

    UserPrincipal user = UserPrincipal.FindByIdentity(
     context, 
     IdentityType.SamAccountName, 
     username); 
    GroupPrincipal group = GroupPrincipal.FindByIdentity(
     context, groupname); 

    return user.IsMemberOf(group); 
} 
+0

System.DirectoryServices.AccountManagement命名空間是.NET 3.5的新增功能,不是嗎? – 2008-09-10 09:04:21

+0

鏈接文章中的第一句話: 「通過一些新的3.5東西,我偶然發現了一個名爲」System.DirectoryServices.AccountManagement「的新程序集 - 這引起了我的注意。」 – Espo 2008-09-11 05:36:10

0

如果你談論的是當前運行的用戶則

using System.Security.Principal; 

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
WindowsPrincipal wp = new WindowsPrincipal(identity); 

if (wp.IsInRole("BUILTIN\Administrators")) 
    // Is Administrator 
else 
    // Is Not 

如果沒有,那麼我預計其可能身份設置爲特定的用戶,但沒有研究如何。

相關問題