从所有组中删除单个用户,使用c#的域用户除外?

从所有组中删除单个用户,使用c#的域用户除外?,c#,active-directory,C#,Active Directory,我正在试验c#并添加了一点,但是我试图从所有组中删除一个用户,组域用户除外 我知道如何使用 DirectoryEntry grprem = new DirectoryEntry(groupdn); grprem.invoke("remove", new object[] { userdn }); grprem.commitchanges(); grprem.close(); 以

我正在试验c#并添加了一点,但是我试图从所有组中删除一个用户,组域用户除外

我知道如何使用

 DirectoryEntry grprem = new DirectoryEntry(groupdn);
                grprem.invoke("remove", new object[] { userdn });
                grprem.commitchanges();
                grprem.close();
以及来自所有组的单个用户,使用:

user.Properties["memberof"].clear();
(这一次出现错误,我认为这是因为必须离开一个主要群体,因此提出了这个问题)
但是如何保留单个组“域用户”并删除所有其他组?

memberOf
是由目录计算的一个特殊属性(即,在使用
member
属性将新用户的DN添加到
对象中后,将重新计算用户的
memberOf
属性值):因此无法在其中添加/删除/更新值。因此,使用现有代码,实现所需功能的最简单方法是在所有用户组上循环,并从每个组(保留组除外)中删除用户的DN:

DirectoryEntry currentGroup=null;
if(user.Properties[“memberOf”].Count>0){
foreach(user.Properties[“memberOf”]中的字符串groupDn){
如果(!groupDn.Equals(“yourDomainUsersGroup”,StringComparison.OrdinalIgnoreCase)){
currentGroup=新目录条目(groupDn);
//我现在无法测试,但可能不允许您在memberOf属性值上循环时删除组成员
//因此,您必须使用临时列表来存储组DN,然后在列表上执行新循环,然后真正删除组成员
调用(“删除”,新对象[]{“yourUserDn”});
currentGroup.CommitChanges();
currentGroup.Close();
}
}