隐藏文件attrib (隐藏文件attrib为什么会损坏文件)

每个人电脑上都有一些小秘密不想让人知道,常规的方法是使用第三方加密软件进行保护。不过加密软件会占用系统资源,而且密码的记忆也让人很头疼。对于Windows 10用户,保护秘密文件可以借助系统自带的批处理保护文件。

首先启动记事本输入下列的代码,然后将其保存为lock.bat放置在桌面备用(图1):

cls

@ECHO OFF

title Folder Private

if EXIST \"网络.{208D2C60-3AEA-1069-A2D7-08002B30309D}\" goto UNLOCK

if NOT EXIST Private goto MDLOCKER

:CONFIRM

echo 是要锁定加密文件夹?(Y/N)

set/p \"cho=>\"

if %cho%==Y goto LOCK

if %cho%==y goto LOCK

if %cho%==n goto END

if %cho%==N goto END

echo Invalid choice.

goto CONFIRM

:LOCK

ren Private \"网络.{208D2C60-3AEA-1069-A2D7-08002B30309D}\"

attrib +h +s \"网络.{208D2C60-3AEA-1069-A2D7-08002B30309D}\"

echo 文件夹已被锁定

goto End

:UNLOCK

echo 请输入密码解锁文件夹

set/p \"pass=>\"

if NOT %pass%== cfan goto FAIL

attrib -h -s \"网络.{208D2C60-3AEA-1069-A2D7-08002B30309D}\"

ren \"网络.{208D2C60-3AEA-1069-A2D7-08002B30309D}\" Private

explorer Private

echo 文件夹已经成功解锁

goto End

:FAIL

echo 错误密码

goto end

:MDLOCKER

md Private

echo 已经创建加密文件夹

goto End

:End



代码解读:

上述批处理加密文件是借助创建类标识符,并且为其设置系统,隐藏属性实现。首先在当前目录下创建一个名为“Private”的目录,设置密码(通过if NOT %pass%== cfan语句创建,默认为“cfan”),然后使用rem命令将其重命名为“网络.{208D2C60-3AEA-1069-A2D7-08002B30309D}”(类标识符,可以展开位于注册表的[HKEY_LOCAL_MACHINE\Software\Classes\CLSID],任意选择自己需要的标识电脑符)。这样再次输入密码后,代码会使用rem命令恢复“网络.{208D2C60-3AEA-1069-A2D7-08002B30309D}”为“Private”,同时解除其系统、隐藏属性方便我们访问。

这样当我们需要隐藏文件时,只要将上述批处理复制到需要隐藏文件的目录下。以管理员身份运行上述批处理,运行后会自动在当前目录下创建“Private”文件夹(图2)。



图2 创建加密目录

按提示将需要加密的文件全部移动到上述加密目录中,完成文件的移动后继续运行上述批处理,在系统提示是否加密该目录时,按提示输入“Y”确认(图3)。



图3 确认加密文件夹

按提示输入Y确认后,此时批处理会自动将“Private”文件夹重命名为“网络”(文件夹自动变为系统文件夹网络),同时被自动添加上系统、隐藏属性(图4)。



图4 加密文件夹被重命名为“网络”

因为上述创建的文件夹变为系统文件夹,并且被自动添加系统、隐藏属性。因此默认情况下用户无法看到该目录(需要在文件夹查看方式设置为“显示隐藏文件、文件夹和驱动器”,并且去除“隐藏受保护的操作系统文件”勾选)。这样用户才能看到这个加密的文件夹(图5)。



图5 查看方式设置

当然因为加密文件被重命名为系统文件夹(网络),因此即使用户可以查看到上述加密目录,用户双击打开后也看不到其中的文件,打开的是系统的网络目录(图6)。



图6 用户打开无法看到加密文件

如果自己需要访问加密目录,同上再次运行批处理,在打开的窗口按提示输入访问密码“cfan”(图7)。



图7 输入访问密码

输入正确的密码后,系统会提示文件夹已解锁。同时批处理在后台会自动将网络系统文件夹重命名为“Private”,同时调用“explorer Private“,自动打开加密文件夹,在打开的窗口访问加密文件夹即可(图8)。



图8 访问加密目录

如果需要再次加密文件夹,同上访问完目录后再次运行批处理即可重新加密隐藏。当然因为这里加密使用的是类标识符的方式,因此如果忘记密码需要访问加密目录,我们可以使用命令行自行解密,启动命令提示符后按提示输入下列的命令解密即可(图9):

rem 取消隐藏属性

attrib -h -s \"网络.{208D2C60-3AEA-1069-A2D7-08002B30309D}\"

rem 重命名为Private文件夹

ren \"网络.{208D2C60-3AEA-1069-A2D7-08002B30309D}\" Private



图9 手动解密文件夹