我正在尝试使用c#和.NET更改组的名称。使用以下代码,效果很好:
public void selectADSObject(string LDAP)
{
DirectoryEntry Entry = new DirectoryEntry(ADS_PATH);
Entry.Username = ADS_USER;
Entry.Password = ADS_PW;
DirectorySearcher Searcher = new DirectorySearcher(Entry);
Searcher.SearchScope = System.DirectoryServices.SearchScope.Subtree;
Searcher.Filter = LDAP;
AdObj = Searcher.FindOne();
AdObj.GetDirectoryEntry().Rename("cn=newName");
}
只是没有重命名的“ windows-pre 2000”名称,我也需要重命名。在this页上,我发现
sAMAccountName
是我想要的。但是,当我添加以下行时,它也不会更改Windows 2000以前的名称:AdObj.GetDirectoryEntry().Properties["sAMAccountName"].Value = "newName";
AdObj.GetDirectoryEntry().CommitChanges();
如何更改sAMAccountName / Windows 2000以前的名称?
最佳答案
每次调用时:
AdObj.GetDirectoryEntry()
它实际上创建了一个新对象!下一行将丢失所有更改。请使用类似:
var dent = AdObj.GetDirectoryEntry()
dent.Properties["sAMAccountName"].Value = "newName";
dent.CommitChanges();
dent.rename("cn=newName");