2013-03-14 1 views
3

Je tente de modifier le nom d'un groupe avec C# et .NET. Il fonctionne bien avec le code suivant:Comment modifier un nom de groupe (sAMAccountName) dans ADS?

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"); 
    } 

Il y a juste la « windows-2000 pré » nom qui ne renomme pas et je besoin de renommer aussi. Sur this page j'ai compris que le sAMAccountName est ce que je suis après. Mais quand j'ajoute les lignes suivantes, il ne change pas non plus les pré-Windows 2000 Nom:

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

Comment puis-je changer les SamAccountName/pré-fenêtres Nom 2000?

+0

Essayez de mettre le changement samaccountname avant le renommer(). Emettez deux commitchanges() un après l'attribution samaccountname et un après le rename(). Il existe certaines contraintes pour samaccountname dans AD. – decompiled

+0

@decompiled: encore juste changer le cn et pas le nom de sAMAccountName/pre-windows 2000 :( –

Répondre

5

Chaque fois que vous invoquez:

AdObj.GetDirectoryEntry() 

Il crée un nouvel objet! Chaque changement est perdu sur la ligne suivante. S'il vous plaît utiliser quelque chose comme:

var dent = AdObj.GetDirectoryEntry() 
dent.Properties["sAMAccountName"].Value = "newName"; 
dent.CommitChanges(); 
dent.rename("cn=newName"); 
+0

Merci pour cela.Travail bien pour moi. – rousseauo

Questions connexes