Difference between PrincipalSearcher.FindAll () and GroupPrincipal.FindByIdentity ()

I am trying to get all members of a local group from remote hosts. I found a way to use the System.DirectoryServices.AccountManagement namespace, but in the end I could not find any inconsistencies ...

  • GroupPrincipal.FindByIdentity returns a group object containing only local group members
  • PrincipalSearcher.FindAll returns a group object containing all members of the group (Domain + Local)

Using PrincipalSearcher.FindAll (see below), I get all the members (Domain + Local) of the group.

Conclusion:

  • Member: Homer - S-1-5-21-4017887476-2895526723-3552248342-500
  • Member: smithers - S-1-5-21-4017887476-2895526723-3552248342-1009
  • Member: Domain Admins - S-1-5-21-452759756-260371901-2912106767-512
  • Member: SomeAdminGroup - S-1-5-21-452759756-260371901-2912106767-1154
  • Member: Smithers - S-1-5-21-452759756-260371901-2912106767-1124

the code:

 using (var machineContext = new PrincipalContext(ContextType.Machine, hostname))
 using (var gpSeach = new PrincipalSearcher(new GroupPrincipal(machineContext)))
 {
      foreach (GroupPrincipal gp in gpSeach.FindAll().Where(gp => gp.SamAccountName == "Administrators"))
      {
           foreach (var member in gp.Members)
           {
                Trace.WriteLine("Member: " + member.Name+ " - " + member.Sid);
           }
      }
  }

Using GroupPrincipal.FindByIdentity , I get only local group members:

Conclusion:

  • Member: Homer - S-1-5-21-4017887476-2895526723-3552248342-500
  • Member: smithers - S-1-5-21-4017887476-2895526723-3552248342-1009

the code:

 using (var machineContext = new PrincipalContext(ContextType.Machine, hostname, null, ContextOptions.Negotiate, "myUsername", "myPassword"))
 using (GroupPrincipal localAdminGp = GroupPrincipal.FindByIdentity(machineContext, IdentityType.Name, "Administrators"))
 {
     foreach (var member in localAdminGp.Members)
     {
          Trace.WriteLine("Member: " + member.Name + " - " + member.Sid);
     }
 }

What happens under the veil to get these 2 different results!?!

+5
source share

All Articles