Pregunta

Mi aplicación está trabajando en red local,y el administrador de crear la carpeta para cada usuario en una carpeta compartida con este código:por ejemplo, "m1" es un usuario en la red local.

DirectoryInfo d=new DirectoryInfo(@"\\server\Test");
DirectoryInfo di = new DirectoryInfo(@"\\server\Test\me1");
di.Create(d.GetAccessControl());
DirectorySecurity dSecurity = di.GetAccessControl();

dSecurity.AddAccessRule(new FileSystemAccessRule("everyone",
                                                 FileSystemRights.FullControl,
                                                 AccessControlType.Deny));
di.SetAccessControl(dSecurity);

ahora, cada usuario no puede acceder a su carpeta,puedo usar este código:

DirectoryInfo dInfo = new DirectoryInfo(@"\\Server\Test\me1");
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule("everyone",
                                                 FileSystemRights.FullControl,
                                                 AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);

pero el error "acceso denegado" se ha producido.¿cómo se puede establecer permisos para un usuario específico??me refiero a admin puede dar permiso para que el usuario específico cuando él crear el directorio??gracias.

¿Fue útil?

Solución

Negar Reglas de Control de Acceso (ACE) se comprueba en primer lugar, y todo el mundo está en la Everyone grupo.Por lo tanto el primer ACE va a bloquear el acceso a todos, incluso a usted tratando de cambiar los permisos.

En general las reglas de denegación son el enfoque equivocado.Mejor es añadir las reglas de acceso permitiendo el acceso a los que desee conceder, si es que no hay reglas para permitir la coincidencia de una identidad en la que la identidad se puede obtener acceso denegado—no es necesario bloquear explícitamente a ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top