Pergunta

Meu aplicativo está funcionando na rede local e o administrador cria a pasta para cada usuário na pasta compartilhada com este código:por exemplo, "me1" é um usuário da rede 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);

agora todo usuário não pode acessar sua pasta, eu uso 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);

mas ocorreu o erro "acesso negado".como posso definir permissão para um usuário específico?quero dizer, o administrador pode dar permissão ao usuário específico quando ele cria o diretório?obrigado.

Foi útil?

Solução

As regras de controle de acesso negado (ACE) são verificadas primeiro e todos estão no Everyone grupo.Assim, o primeiro ACE bloqueará todo o acesso de todos, inclusive você que tenta alterar as permissões.

Geralmente as regras de negação são a abordagem errada.É melhor adicionar apenas as regras de acesso que fornecem o acesso que você deseja conceder. Se não houver regras de permissão correspondentes a uma identidade, essa identidade terá acesso negado — você não precisa bloqueá-las explicitamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top