Os sistemas de arquivos do Windows possuem um sinalizador "somente leitura". Isso é mais simples do que ter que definir permissões DACL para um efeito tão simples.
Em um prompt de comando, use o comando ATTR. No shell da GUI, ele deve estar nas Propriedades, embora a GUI possa fazer algo complexo e além do que você realmente queria.
Além disso, se você recriar um diretório com o mesmo nome, poderá aplicar "restaurar versões anteriores" nele.
Atualizar
Eu experimentei um sistema Win7. A exclusão da GUI (sem lixeira) ignora o R
sinalizador no diretório. Também não há avisos adicionais, como eu já vi para H
e / ou S
sinalizadores. A emissão a rd
partir da linha de comando fornece acesso negado conforme o esperado. No entanto, você não pode apenas rd
um diretório não vazio: excluir arquivo e remover diretório são comandos diferentes. Um comando para remover recursivamente um diretório com conteúdo removerá o conteúdo e falhará ao remover o diretório agora vazio.
Portanto, proteger o diretório em si não funciona na ação da GUI que você tem em mente. E isso implica que qualquer abordagem mais sofisticada para impedir que o próprio diretório seja removido não impedirá que seja esvaziado primeiro! Você disse que ainda deseja acesso normal dentro do diretório para criar e remover arquivos, portanto, bloqueá-lo completamente não é uma solução para você.
A melhor solução parece ser o link simbólico . Criar um link simbólico (novo estilo, o que o Windows Vista e acima agora chamam de link simbólico) para o diretório na área de trabalho, quando o diretório realmente existir em outro lugar, funciona no sentido de que se eu excluir o ícone da área de trabalho (shift-delete, sem lixeira) o diretório real não é afetado, pois apenas o link foi excluído.
Shift-Delete do ícone da área de trabalho não se importava se estava marcado com o R
atributo.
Um programa usando a caixa de diálogo padrão de abertura de arquivo do Windows navegava pelo link simbólico sem problemas. Ele realmente resolveu o nome do diretório vinculado; portanto, o arquivo aberto era o nome real ; por exemplo, Desktop\MyFolder
tornou-se D:\scratch\MyFolder
enquanto eu navegava por ele.
Usando um link de estilo antigo (uma junção ), o programa viu o nome com a junção ainda no caminho; por exemplo C:\Users\john\Desktop\MyFolder\test.txt
, o fato de ser um link é invisível. No entanto, a ação de exclusão da GUI ainda a tratava como um link, não seguindo-a invisivelmente.
De qualquer maneira, se um programa faz usar o nome alias directamente ele vai trabalhar. Mas ter arquivos às vezes vistos com um nome e outras vezes pode confundir as coisas.
Conclusão
Use uma junção na área de trabalho com a pasta realmente localizada em outro lugar e será completamente transparente que é isso que está acontecendo. Opcionalmente, usando DACL para impedir a exclusão acidental do arquivo do ponto de junção na área de trabalho. Pelo menos, tenha um script para recriá-lo quando necessário.
Bônus
Eu não tentei isso, mas gostaria de saber se você poderia ter algo em "novos itens" para recriar a junção ou o link simbólico? Em seguida, clique com o botão direito na área de trabalho agora vazia, escolha Novo ... e escolha "Lixo eletrônico da área de trabalho" no menu. Faça com que ela restaure tudo o que você realmente queria na área de trabalho.