2010-09-09 24 views
3

我的代碼來獲得本地組例子成員成員管理員檢查組本地用戶的

private void GetUserGrps() 
{ 
    using (DirectoryEntry groupEntry = new DirectoryEntry("WinNT://./Administrators,group")) 
    { 
     foreach (object member in (IEnumerable)groupEntry.Invoke("Members")) 
     { 
      using (DirectoryEntry memberEntry = new DirectoryEntry(member)) 
      { 
       new GUIUtility().LogMessageToFile(memberEntry.Path); 
      } 
     } 
    } 

有沒有辦法讓本地用戶所屬的組使用目錄服務?

沒有使用Active Directory或域,因爲我只需要本地機器而不是域。

+0

沒你今天問這個問題前面? - http://stackoverflow.com/questions/3672602/find-out-user-belongs-to-which-groups – Jemes 2010-09-09 18:51:30

+0

是的,但這是另一種方法..我需要建議... – user175084 2010-09-09 19:03:15

+1

目錄服務非常多綁定到LDAP或Active Directory使用。這不是通過你的本地Windows機器用戶騎自行車。 – NotMe 2010-09-09 19:09:52

回答

3

嘗試這個

using System.DirectoryServices.AccountManagement; 

static void Main(string[] args) 
{ 
    ArrayList myGroups = GetUserGroups("My Local User"); 
} 
public static ArrayList GetUserGroups(string sUserName) 
{ 
    ArrayList myItems = new ArrayList(); 
    UserPrincipal oUserPrincipal = GetUser(sUserName); 

    PrincipalSearchResult<Principal> oPrincipalSearchResult = oUserPrincipal.GetGroups(); 

    foreach (Principal oResult in oPrincipalSearchResult) 
    { 
     myItems.Add(oResult.Name); 
    } 
    return myItems; 
} 

public static UserPrincipal GetUser(string sUserName) 
{ 
    PrincipalContext oPrincipalContext = GetPrincipalContext(); 

    UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, sUserName); 
    return oUserPrincipal; 
} 
public static PrincipalContext GetPrincipalContext() 
{ 
    PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Machine); 
    return oPrincipalContext; 
}