public void CopyUserMembership(NTLocalUser sourceRemoteUser, NTLocalUser destLocalUser) { ActionObserver.NotifyAction("Copying", "User Membership", sourceRemoteUser.FullName, destLocalUser.FullName); TextBank existingMembers = new TextBank(destLocalUser.GetMembership()); GroupCopier groupCopier = new GroupCopier(false, false, true, DefaultUserPassword, false, ActionObserver); foreach (NTLocalGroup remoteGroup in sourceRemoteUser.GetMembership()) { if (!existingMembers.ContainsText(remoteGroup.Name)) { NTLocalGroup localGroup = null; // find a user by the same name of local machine if (!NTHost.CurrentMachine.TryGetLocalGroup(remoteGroup.Name, out localGroup)) { if (_importLocalGroups) { groupCopier.CopyRemoteGroupToLocalMachine(remoteGroup); } } if (localGroup != null) { if (!existingMembers.ContainsText(localGroup.Name)) { destLocalUser.AddMembership(localGroup); } } } } }