ACL avec FileSystemAccessRule
Bonjour à tous,
Voilà j'ai une fonction qui permet de modifier les droits ACL d'un directory.
J'utilise SetAccessRuleProtection() par le biais du constructeur FileSystemAccessRule.
Un petit code histoire d'être compréhensible :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
string userName = this.listView1.SelectedItems[0].Text;
DirectoryInfo dInfo = new DirectoryInfo(treeView1.SelectedNode.FullPath);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.SetAccessRuleProtection(true, false);
dSecurity.AddAccessRule(new FileSystemAccessRule(
@userName,
rights,
iFlags,
pFlags,
AccessControlType.Allow)
);
dInfo.SetAccessControl(dSecurity); |
Problème :
John Smith crée un dossier TEST. Par défaut les ACE associés à ce dossier sont :
- AUTORITE NT\SYSTEM
- BUILTIN\Administrateurs
- BUILTIN\Utilisateurs
- CREATEUR PROPRIETAIRE
- INFRA\jsmith
Lorsque je modifie les autorisations de John Smith (par exemple en Contrôle Total), l'appli supprime l'ACL entière (uniquement utilisateurs / groupes locaux) et ajoute l'ACE pour John Smith en Full Control !
EDIT :
Lorsque l'ACL contient plusieurs utilisateurs (pas d'objets locaux), l'appli modifie correctement les droits d'un user sans supprimer les autres ACE.
Je ne comprends pas pourquoi l'appli formate les ACE locaux d'un directory en utilisant le code. Savez-vous d'où vient le problème ?
Merci.