Modification ACL pour une liste de distrib

Modification ACL pour une liste de distrib - VB/VBA/VBS - Programmation

Marsh Posté le 15-06-2010 à 11:14:47    

Bonjour à tous,
 
J'ai créé un script qui me permet de généré des listes de distribution dans une domaine AD.
Tout est ok ! J'arrive à ajouter le manager, etc, etc... Il me manque JUSTE la petite coche qui va bien : "Le gestionnaire peut mettre à jour la liste des membres".
Après pas mal de recherche, j'ai compris qu'il s'agissait d'une modif d'acl, j'ai trouvé même un bout de code, que j'ai adapté... mais ca ne fonctionne pas :  
 

Code :
  1. set objSecurityDescriptor = objGroup.Get("ntSecurityDescriptor" )
  2.  Set objDACL = objSecurityDescriptor.DiscretionaryACL
  3.  Set objACE = CreateObject("AccessControlEntry" )
  4.         objACE.Trustee = objUser.distinguishedName
  5.         objACE.AccessMask = ADS_RIGHT_DS_WRITE_PROP
  6.         objACE.AceFlags = ADS_ACEFLAG_DONT_INHERIT_ACE
  7.         objACE.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
  8.         objACE.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT
  9.         objACE.objectType = ADS_OBJECT_WRITE_MEMBERS
  10.         objDACL.AddAce objACE
  11.  objSecurityDescriptor.DiscretionaryACL = objDACL
  12.  objGroup.Put "ntSecurityDescriptor", Array(objSecurityDescriptor)
  13.  objGroup.SetInfo


 
J'obtiens une erreur sur la ligne objGroup.Put "ntSecurityDescriptor", Array(objSecurityDescriptor) avec "Structure de l'ID de sécurité non valide" "code : 80070539"
J'ai volontairement mit que la partie du code interessante... si vraiment vous avez besoin de plus, je peu la donner!
Merci de votre aide en tout cas !!!
 
 
*** Edit ***
Avec le code suivant, je n'ai plus de message d'erreur, mais il ne fait strictement rien...
 

Code :
  1. Set objSecurityDescriptor = objGroup.Get("ntSecurityDescriptor" )
  2.  Set objDACL = objSecurityDescriptor.DiscretionaryACL
  3.  Set objACE = CreateObject("AccessControlEntry" )
  4.         wscript.echo (objUser.sAMAccountName)
  5.  objACE.Trustee = "Commun\" & objUser.Get("sAMAccountName" )
  6.           objace.accessmask = &H20
  7.  objace.acetype = &H5
  8.  objace.flags = &H1
  9.  objace.aceflags= &H2
  10.  objace.ObjectType = "{BF9679C0-0DE6-11D0-A285-00AA003049E2}"
  11.  objSecurityDescriptor.DiscretionaryAcl = objDACL
  12.  objgroup.Put "ntSecurityDescriptor", objSecurityDescriptor
  13.  objgroup.SetInfo


Message édité par podezebi le 15-06-2010 à 13:41:16
Reply

Marsh Posté le 15-06-2010 à 11:14:47   

Reply

Marsh Posté le 16-04-2013 à 09:04:12    

Bonjour, 3 ans plus tard ..... mais si ca peut aider quelqu'un :)  
en VB2008 pour cocher cette sacré case :)
 
Imports ActiveDs
'--------------------------------
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_RIGHT_DS_WRITE_PROP = &H20
Const ADS_ACEFLAG_INHERIT_ACE = &H2
Const ADS_ACEFLAG_DONT_INHERIT_ACE = &H0
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_OBJECT_WRITE_MEMBERS = "{BF9679C0-0DE6-11D0-A285-00AA003049E2}"
Dim GRP As New DirectoryEntry("LDAP://NOV.FR/CN=GRPA,OU=AAA,DC=nov,DC=fr" )          'ici la variable qui definie le groupe en fonction de votre Active directory
Dim newAce = New AccessControlEntryClass()
Dim GRPSD As SecurityDescriptor = CType(GRP.Properties("ntSecurityDescriptor" ).Value, SecurityDescriptor)
Dim GRPAcl As AccessControlList = CType(GRPSD.DiscretionaryAcl, AccessControlList)
newAce.Trustee = "NOV.fr\GRP-AD-GEST"                     ' ici le nom du groupe ou user qui gere deja votre groupe.
newAce.AccessMask = ADS_RIGHT_DS_WRITE_PROP
newAce.AceFlags = ADS_ACEFLAG_DONT_INHERIT_ACE
newAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT
newAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
newAce.ObjectType = ADS_OBJECT_WRITE_MEMBERS
GRPAcl.AddAce(newAce)
GRPSD.DiscretionaryAcl = GRPAcl
GRP.Properties("ntSecurityDescriptor" ).Value = GRPSD
GRP.CommitChanges()

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed