Estou tentando testar algumas exceções do sistema de arquivos em um aplicativo baseado em Java.
Eu preciso encontrar uma maneira de criar um diretório localizado em% TMP% definido como somente leitura.
Essencialmente em plataformas UNIX / POSIX, posso fazer um chmod -w e obter esse efeito. No Windows 7 / NTFS, é claro que esta é uma história diferente.
Estou correndo em vários problemas sobre isso. Meu usuário tem direito "administrativo" (embora isso nem sempre seja o caso) e, como tal, o diretório é criado com uma ACL, incluindo:
- NT AUTHORITY \ SYSTEM
- BUILTIN \ Administradores
- < meu usuário atual >
Existe uma maneira de usar o icacls para essencialmente colocar esse diretório em um estado onde ele é PERIOD de somente leitura, fazer meu teste e restaurar a ACL para remoção?
EDITAR
Com as informações fornecidas por @Ansgar Wiechers, consegui encontrar uma solução.
Eu usei o seguinte:
icacls dirname /deny %username%:(WD)
Na página localizada aqui , encontrei isso em a seção de comentários:
icacls preserves the canonical order of ACE entries as:
* Explicit denials
* Explicit grants
* Inherited denials
* Inherited grants
Ao executar o comando icalcs acima, eu consegui definir a capacidade do usuário atual de gravar ou anexar arquivos (WD) ao diretório para negar.
Depois, foi uma questão de devolvê-lo a um teste de estado:
icacls dirname /reset /t /c
Concluído