1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
PROCEDURE FixeDroits(nomFichier est chaîne, utilisateur est chaîne = GetUserName(vgp_SIDEveryone), droits est entier = GENERIC_ALL)
Myresult est entier système
pSecDesc est entier système
ea est EXPLICIT_ACCESS
pNewDACL est entier système
pOldDACL est entier système
bResult est un booléen = False
NewACL est un ACL
OldACL est un ACL
SecDesc est un ACL
pNewDACL = &NewACL
pOldDACL = &OldACL
pSecDesc = &SecDesc
fs est objet Automation dynamique = allouer un objet Automation "Scripting.FileSystemObject"
d est objet Automation dynamique = fs>>GetDrive(fs>>GetFolder(nomFichier)>>Drive)
sTypeSystem est chaîne
//info(nomfichier,utilisateur, droits)
sTypeSystem = d>>FileSystem
SI sTypeSystem = "NTFS" ALORS
Myresult = API("advapi32.dll","GetNamedSecurityInfoA",nomFichier, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, 0x0, 0x0, pOldDACL, 0x0, pSecDesc)
SI Myresult = ERROR_SUCCESS ALORS
ea.pTRUSTEE.ptstrName = &utilisateur
API("advapi32.dll","BuildExplicitAccessWithNameA", &ea, &utilisateur, droits, SET_ACCESS, OUBinaire(CONTAINER_INHERIT_ACE,OBJECT_INHERIT_ACE))
Myresult = API("advapi32.dll","SetEntriesInAclA",1, &ea, Null, &pNewDACL)
SI Myresult = ERROR_SUCCESS ALORS
Myresult = API("advapi32.dll","SetNamedSecurityInfoA",nomFichier, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, 0x0, 0x0, pNewDACL, 0x0)
SI Myresult = ERROR_SUCCESS ALORS
AjouteLog(vgp_Log,"Modification des droits sur le répertoire "+nomFichier+" pour "+utilisateur,_LOG_OK,False, True)
bResult = True
SINON
AjouteLog(vgp_Log,"SetNamedSecurityInfo a échoué ! error code : " + Myresult+" (Compte AD : "+utilisateur+" / dossier : "+nomFichier+")" ,_LOG_NOK, False, True)
FIN
VariableRAZ(NewACL)
SINON
AjouteLog(vgp_Log,"SetEntriesInAcl a échoué ! error code : " + Myresult+" (Compte AD : "+utilisateur+" / dossier : "+nomFichier+")" ,_LOG_NOK,False, True)
FIN
VariableRAZ( SecDesc)
SINON
AjouteLog(vgp_Log,"GetNamedSecurityInfo a échoué ! error code : "+Myresult+" (Compte AD : "+utilisateur+" / dossier : "+nomFichier+")" ,_LOG_NOK, False, True)
FIN
ELSE
AjouteLog(vgp_Log,"Le répertoire "+nomFichier+" n'est pas sur un disque NTFS." ,_LOG_NOK, False, True)
FIN
libérer fs
libérer d
RENVOYER bResult |
Partager