una tracer reflexiva numerada extendida estandar established dentro cómo crear creación configurar configuración como aplica acls c# .net security acl rights

c# - tracer - crear acls



¿Por qué no puedo configurar esta regla de ACL en C#? (1)

Para finalizar el proceso, debe llamar a DirectoryInfo.SetAccessControl () con la ACL modificada.

GetAccessControl () realmente devuelve una copia de la ACL. Puede modificarlo, pero no tendrá efecto hasta que no llame a SetAccessControl ()

Funcionando como un administrador elevado en Vista SP1, mi aplicación C # intenta establecer la siguiente regla con el siguiente código. No se produce ningún error, pero tampoco se produce ningún cambio en la ACL del directorio. ¿Qué me estoy perdiendo?

public static void Main( string args[] ) { string dirPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Company"), "Product" ); Directory.Create(dirPath); _SetAcl(dirPath, "Users", FileSystemRights.FullControl); } private static void _SetAcl(string path, string identity, FileSystemRights rights) { var info = new DirectoryInfo(path); var acl = info.GetAccessControl(); var rule1 = new FileSystemAccessRule(identity, rights, AccessControlType.Allow); bool modified; acl.ModifyAccessRule(AccessControlModification.Reset, rule1, out modified); var inheritanceFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit; var rule2 = new FileSystemAccessRule(identity, rights, inheritanceFlags, PropagationFlags.InheritOnly, AccessControlType.Allow); acl.ModifyAccessRule(AccessControlModification.Add, rule2, out modified); }

Actualización: Simplemente agregue el siguiente código como la última línea del método _SetAcl, y mi código está listo para funcionar.

info.SetAccessControl(acl);