本帖最后由 wjbych 于 2024-11-5 09:19 编辑
提醒:使用前请新建一个无用的文件夹先做测试,可正常使用后再加密其他文件夹
说明:软件只是对文件夹做了隐藏,禁止Everyone对文件夹的读写权限,并不是加密了文件
更新内容
对加密文件夹进行了名称修改,除禁止Everyone读写外,还修改名称为畸形文件夹,使其被everything搜索到后无法打开。
如果使用的是最早的版本,没解密就移除了文件夹,可以通过设置“文件夹选项”来显示被隐藏的文件夹,然后手动把目录增加到软件下的表格里。
可以搜索到,可以打开
可以被搜索到,但无法打开
蓝奏云下载:
https://wwfh.lanzout.com/icJ082eatxba
密码:df4b
更新内容
1、去掉了miniExcel引用包,删除掉了excel配置文件
2、增加了密码登录功能,可以修改密码
3、使用sqlite3数据库来保存文件夹列表和用户密码,用户密码采用md5加盐
4、使用了 antdui来美化下界面
5、未解锁文件平不能被移除
其他还是保持老样子,由于未在别的电脑上做测试,有用户反应文件加锁后无法解锁,解锁后的文件无法删除这些问题,请在使用时先在电脑上建个无用文件夹先试一下,确认无问题后再使用
初次登录时需要先设置个密码
登录后的样子
修改密码的样子
以后登录时样子
引用的包,不要删除
数据库文件,不要删除,无密码,可打开查看
前言
最近想要把电脑上的一些文件夹隐藏掉,基本上实现看不见、打不开就行了,看了一下网上现有的软件,实现起来基本上有如下几种:
1、真正的对文件夹里的所有内容进行加密,时间上花费太大,使用的时候还需要解密了,这不是咱需要的
2、对文件夹改图标或畸形文件夹来实现隐藏
3、通过文件acl来实现禁止对文件夹的访问
4、还有一些咱也不知道原理的,但看上去功能一般,偏偏还收费。
5、使用Bitlocker,但这个只能对分区,不能对文件夹,并且初始化时非常慢
综合以上,决定自己手写一个简单的,不需要对文件加密,只需要对一般水平的人隐藏,并且就算显示了隐藏,也禁止被访问到就可以了,那就使用文件acl来实现吧,acl本质上不能加密码访问,软件加密码只是为了防止别人知道你隐藏了哪些文件夹而已,所以就没有使用密码。
第三方引用
采用c#编写,环境为.net 4.7,引用了miniExcel,用于加载和保存你设置好的文件夹列表,免得下次打开时找不到已经隐藏的文件夹。
如果软件好用的话,以后将使用sqlite数据库来保存文件夹列表和目录,目前就将就一下吧。
folderpath.xlsx 文件,用于存放文件目录和状态
简介
使用起来很简单,目前软件没有密码,打开直接是界面
就四个按钮,很简单直观,选择一个文件夹,然就可以进行加密或解密了,如果不想使用这个文件夹了,选中后点移除就从软件中去掉了。
加锁后的文件就看不到,就算你显示隐藏,也无法打开了。
软件隐藏后可以阻止被系统索引,但无法阻止被everything搜索,并且为了快速简单,只禁止了文件夹访问,里面的文件只要是正确的地址,还是可以打开的。
有兴趣的可以试试源码,自己完善下
[C#] 纯文本查看 复制代码 [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)][/align][align=left]
[return: MarshalAs(UnmanagedType.Bool)][/align][align=left]
static extern bool SetFileAttributes([MarshalAs(UnmanagedType.LPTStr)] string lpFileName, FileAttributes dwFileAttributes);[/align]
[align=left]
string ExcelPath = "folderpath.xlsx";[/align][align=left]
string Title = "文件夹加解密提醒";[/align][align=left]
public void Lock(string FolderPath)[/align][align=left]
{[/align][align=left]
string folderPath = FolderPath;[/align][align=left]
FileAttributes attributes = File.GetAttributes(folderPath);[/align]
[align=left]
// 添加属性以阻止文件夹被索引[/align][align=left]
attributes |= FileAttributes.NotContentIndexed;[/align][align=left]
SetFileAttributes(folderPath, attributes);[/align]
[align=left]
File.SetAttributes(folderPath, File.GetAttributes(folderPath) | FileAttributes.Hidden|FileAttributes.System);[/align][align=left]
DirectorySecurity directorySecurity = Directory.GetAccessControl(folderPath);[/align][align=left]
FileSystemAccessRule fileSystemAccessRule = new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny);[/align][align=left]
directorySecurity.AddAccessRule(fileSystemAccessRule);[/align][align=left]
Directory.SetAccessControl(folderPath, directorySecurity);[/align]
[align=left]
}[/align][align=left]
public void UnLock(string FolderPath)[/align][align=left]
{[/align][align=left]
string folderPath = FolderPath;[/align][align=left]
DirectorySecurity directorySecurity = Directory.GetAccessControl(folderPath);[/align][align=left]
FileSystemAccessRule fileSystemAccessRule = new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny);[/align][align=left]
directorySecurity.RemoveAccessRule(fileSystemAccessRule);[/align][align=left]
Directory.SetAccessControl(folderPath, directorySecurity);[/align][align=left]
File.SetAttributes(folderPath, File.GetAttributes(folderPath) & ~FileAttributes.Hidden&~FileAttributes.System);[/align][align=left]
}
|