Файловые системы Windows имеют флаг «только для чтения». Это проще, чем устанавливать разрешения DACL для такого простого эффекта.
В командной строке используйте команду ATTR. В оболочке GUI это должно быть в Свойствах, хотя графический интерфейс может сделать что-то сложное и сверх того, что вы действительно хотели.
Кроме того, если вы воссоздаете каталог с тем же именем, вы можете применить к нему «восстановление предыдущих версий».
Обновить
Я экспериментировал на системе Win7. GUI удаления (без корзины) игнорирует на R
флаг на каталог. Никаких дополнительных подсказок, предупреждающих об этом, также нет, как я видел для H
и / или S
флагов. Выдача rd
из командной строки дает отказано в доступе, как и ожидалось. Тем не менее, вы не можете просто rd
создать непустую директорию: удалить файл и удалить директорию - это разные команды. Команда для рекурсивного удаления каталога с содержимым удалит содержимое, а затем не удалит пустой каталог.
Таким образом, защита самого каталога не работает в действии GUI, которое вы имеете в виду. И это означает , что любой любитель подход к предотвращению каталога непосредственно от удаления не будет препятствовать его от опорожнить первый! Вы сказали, что по-прежнему хотите иметь нормальный доступ в каталоге для создания и удаления файлов, поэтому его полная блокировка не является решением для вас.
Наилучшим решением кажется символическая ссылка . Создание символической ссылки (новый стиль, которую Windows Vista и выше называют символической ссылкой) на каталог на рабочем столе, когда каталог фактически существует где-то еще, работает в том смысле, что если я удалю значок на рабочем столе (shift-delete, нет корзины) фактический каталог не изменяется, так как была удалена только ссылка.
Shift-Delete иконки на рабочем столе не заботило, была ли она помечена R
атрибутом.
Программа, использующая стандартное диалоговое окно открытия файлов Windows, без проблем прошла по символической ссылке. Он фактически разрешил имя связанного каталога, поэтому открытый файл был настоящим именем; например Desktop\MyFolder
стал, D:\scratch\MyFolder
как я прошел через это.
Используя ссылку в старом стиле ( Junction ), программа увидела имя с соединением, которое все еще находится в пути; например, C:\Users\john\Desktop\MyFolder\test.txt
тот факт, что это ссылка невидима. Тем не менее, действие удаления GUI все еще рассматривает его как ссылку, а не незаметно следит за ней.
В любом случае, если программа делает использование псевдонима имени непосредственно он будет работать. Но наличие файлов, иногда видимых с одним именем, а иногда с другим, может запутать вещи.
Вывод
Используйте Junction на рабочем столе с папкой, действительно расположенной в другом месте, и будет совершенно ясно, что это то, что происходит. При желании можно использовать DACL для предотвращения случайного удаления файла точки соединения на рабочем столе. По крайней мере, есть сценарий для его повторного создания при необходимости.
бонус
Я не пробовал это, но мне интересно, не могли бы вы добавить что-нибудь в "новые элементы", чтобы воссоздать соединение или символическую ссылку? Затем просто щелкните правой кнопкой мыши на пустом рабочем столе, выберите New ... и выберите «Desktop Junk» из меню. Пусть он восстановит все, что вы действительно хотели на рабочем столе.