2010-07-20 15 views
6

Sto creando e aggiornando i gruppi in Active Directory utilizzando la classe GroupPrincipal in System.DirectoryServices.AccountManagement. Durante la creazione e l'aggiornamento, devo anche essere in grado di impostare la proprietà ManagedBy che è possibile impostare nella scheda Managed By nelle proprietà dei gruppi nella console di gestione di Active Directory.Come impostare la proprietà ManagedBy su GroupPrincipal

Può essere programmato?

risposta

8

Non puoi farlo direttamente, purtroppo - ma è possibile ottenere l'accesso al sottostante DirectoryEntry e farlo lì:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"); 

UserPrincipal toBeModified = UserPrincipal.FindByIdentity("....."); 
UserPrincipal manager = UserPrincipal.FindByIdentity(ctx, "......"); 

DirectoryEntry de = toBeModified.GetUnderlyingObject() as DirectoryEntry; 

if (de != null) 
{ 
    de.Properties["managedBy"].Value = manager.DistinguishedName; 
    toBeModified.Save(); 
} 
+0

Non dovrebbe il 'tobeModified' essere di tipo' GroupPrincipal'? –

+1

@PBMe_HikeIt: no dato che la proprietà 'managedBy' non è" emersa "in' GroupPrincipal', devi andare "un livello in basso" a 'DirectoryEntry' e gestirla lì –

0

Dai uno sguardo allo this page. Questo è uno dei migliori tutorial su AD in C#.

del codice che dovrebbe funzionare (non testata):

string connectionPrefix = "LDAP://" + ouPath; 
    DirectoryEntry dirEntry = new DirectoryEntry(connectionPrefix); 
    DirectoryEntry newGroup = dirEntry.Children.Add 
     ("CN=" + groupName, "group"); 
    group.Properties["sAmAccountName"].Value = groupName; 
    newGroup.Properties["managedBy"].Value = managerDistinguishedName; 
    newGroup.CommitChanges(); 
    dirEntry.Close(); 
    newGroup.Close(); 
+0

che non utilizza lo spazio dei nomi System.DirectoryServices.AccountManagement che il PO ha richiesto ... –

+0

* http: //www.codeproject.com/KB/system/everythingInAD.aspx#13* non trovato – Kiquenet

1

Si potrebbe estendere la classe GroupPrincipal e fornire una proprietà ManagedBy utilizzando il metodo ExtensionSet.

+0

Questo è il modo in cui sto attaccando il problema ... anche se ho problemi a far funzionare 'ExtensionSet' correttamente –

+0

[ Questo] (https://www.codeproject.com/articles/118122/how-to-use-ad-attributes-not-represented-in-userpr) su Code Project sembra una grande spiegazione su come estendere il GroupPrincipal classe usando inhe ritance –

Problemi correlati