在日常使用电脑过程中,时常因为手残,导致关键文件夹被误删,我深深体会过,一次我在删除文件的过程中,不小心选到了全部的文件夹,然而并未注意,系统提示文件过大无法放入回收站,结果就全部删除了,一大堆的关键数据找不回来了.....
如何创建一个不可删除的文件夹呢?我搜索了很多文章,很多确实可以避免被删除,但是会影响文件的正常读取,我研究了很长时间,终于得出一个实际,而且比较可靠的方法
首先,举例,假设桌面有一个常用的文件夹dir,我们需要这个文件夹不可被删除,但是又不影响文件的增加,修改,删除
进行以下操作:
1.右键文件夹[属性]-[安全]-[高级]
首先[禁用继承],如图
此时权限条目基本会被清空,如果没有清空,那么选择每一条权限条目,进行[删除]
2.[添加]一条新的权限条目,[选择主体],在"输入要选择的对象名称"输入框输入为当前用户名,如果不清楚的话去C:\Users第一个文件夹名就是当前用户名,点击[确定]
3.点击右侧的蓝色字体[显示高级权限],将类型设置为允许,应用于"此文件夹,子文件夹,和文件"勾选"完全控制",点击[确定]
4.重复第2步,新建一条权限条目,点击右侧的蓝色字体[显示高级权限],将类型设置为禁止,应用于"只有该文件夹",只勾选"删除","读取权限","更改权限","取得所有权",点击[确定]
5.点击[应用],安全提示点确认即可,最后关键的一步,点击上方"所有者"后方的[更改],输入管理员用户名administrator点击[确定],点击[应用],点击[确定]
此时已经基本上完成,你可以尝试删除该目录,无论如何删除,该目录都不可能被删除,并且可以正常访问该目录,正常创建文件,正常访问文件,即使在命令行模式下,也无法删除
但是有一些小问题,只能在这个文件夹里面新建文件夹,如果需要新建文件,需要在外部新建文件,然后移到文件夹内,但是又有新的问题,从外部移到内部的文件夹由于受到目录权限的影响,会显示无访问权限,甚至无法再次移出去,无法删除,此时只需要需要执行一些cmd命令来解决,在文件夹内部使用cmd命令,注意替换你的用户名,执行完毕后目录下的文件,文件夹正常访问,修改,删除:
unlock.bat
icacls ./* /grant username:F
但是总不能每次都打开cmd窗口来解锁权限,因此建议执行完毕上面的命令之后,新建一个bat脚本,把上面的命令粘贴进去,将这个文件移进去(需要再次执行命令上面的命令以解锁该脚本的执行权限),
此时已经大功告成了,只需要有文件向该文件夹移动的时候,才需要执行脚本,另外,我们新建的这个被保护的文件夹内的文件夹是不受限制的,可以任意删除,可以在在这些文件夹下任意读取,新建,修改文件内容,不会影响正常使用,唯一限制的就是我们创建的这个文件夹不会被删除
如果需要删除这个文件夹也可以,只需要按照原来的方法,将这个文件夹的所有者设置为自己,就可以删除这个文件夹了,
除此之外,我再补充一下其他有帮助的脚本:
脚本1: lock.bat
用来锁定当前目录下的文件夹以及文件,使得不可被删除(命令行除外),但是同样也无法被读取,修改,可以使用上方的cmd命令进行解锁,也可以点卡文件夹获取访问权限,但是同样会使得限制删除失效,注意替换USER,
for %%f in (*) do @if not "%%~nxf" == "lock.bat" if not "%%~nxf" == "unlock.bat" if not "%%~nxf" == "allLock.bat" icacls "%%f" /remove:g USER
for /d %%f in (*) do @if not "%%~nxf" == "lock" if not "%%~nxf" == "unlock" icacls "%%f" /remove:g USER /T
for %%f in (*) do @if not "%%~nxf" == "lock.bat" if not "%%~nxf" == "unlock.bat" if not "%%~nxf" == "allLock.bat" icacls "%%f" /remove:g administrators
for /d %%f in (*) do @if not "%%~nxf" == "lock" if not "%%~nxf" == "unlock" icacls "%%f" /remove:g administrators /T
脚本2: AllLock.bat
和脚本1基本相同,唯一不同的是无法同各国点开文件夹的方式获得访问权限,也可以使用上方的cmd命令进行解锁,注意替换USER
for %%f in (*) do @if not "%%~nxf" == "lock.bat" if not "%%~nxf" == "unlock.bat" if not "%%~nxf" == "allLock.bat" icacls "%%f" /deny USER:(D)
for /d %%f in (*) do @if not "%%~nxf" == "lock" if not "%%~nxf" == "unlock" icacls "%%f" /deny USER:(D)
可以根据需要对以上三个脚本保存,将上方三个脚本结合使用更好
如下图
如果需要储存的是一些备份的文件,几乎不读取,那么不用的时候锁上即可,就无法被删除,如果需要对这个文件夹下的目录做继续不可删除并且可读取文件,那么需要重复以上操作