3

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」の名前だけがあり、名前も変更する必要があります。このページで、これが私が求めているものであることがわかりましたsAMAccountName。しかし、次の行を追加しても、Windows 2000 以前の名前は変更されません。

AdObj.GetDirectoryEntry().Properties["sAMAccountName"].Value = "newName";
AdObj.GetDirectoryEntry().CommitChanges();

sAMAccountName / Windows 2000 以前の名前を変更するにはどうすればよいですか?

4

1 に答える 1

5

呼び出すたびに:

AdObj.GetDirectoryEntry()

それは実際に新しいオブジェクトを作成します! すべての変更は次の行で失われます。次のようなものを使用してください:

var dent = AdObj.GetDirectoryEntry()
dent.Properties["sAMAccountName"].Value = "newName";
dent.CommitChanges();
dent.rename("cn=newName");
于 2013-03-14T16:03:46.303 に答える