我正在参加「掘金·启航计划」
有个朋友找我,问我有没有一个简单的小工具,能够直接对文件夹进行加密或者加锁,带着这个朋友的需求就简单的实现了加解锁文件夹功能的小工具!大家也可以想一想,在什么场景下需要对文件夹进行加锁操作呢?
1)一些比较敏感工作文件
2)防止别人复制个人的学习成果文件
等等场景
1、开发环境信息
1)操作系统:windows11 专业版
2)开发工具:Microsoft Visual Studio Professional 2017
3)开发框架:.NET Framework 4.6.1
2、界面设计
1)目标文件夹文本框
输入加解锁目标路径值
2)选择按钮
点击按钮能够选择目标路径,确定后,并且能够赋值到文本框里,此处和文件夹选择组件结合使用
3)加锁按钮
点击按钮,对目标文件夹进行加锁操作
4)解锁按钮
点击按钮,对目标文件夹进行解锁操作
3、浏览文件夹对话框组件
直接双击或者拖入到目标Form窗体即可,这个组件需要配合对应的按钮使用,由按钮或者其他控件的点击事件,间接触发文件夹浏览选择对话框
- 具体代码如下
private void btnSelectFolder_Click(object sender, EventArgs e)
{
folderBrowserDialog.Description = "请选择文件夹";
folderBrowserDialog.RootFolder = Environment.SpecialFolder.MyComputer;
folderBrowserDialog.ShowNewFolderButton = true;
if (txtTargetFolder.Text.Length > 0) folderBrowserDialog.SelectedPath = txtTargetFolder.Text;
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
{
txtTargetFolder.Text = folderBrowserDialog.SelectedPath;
}
}
- 选择文件夹效果
4、加锁按钮
点击加锁按钮,对目标文件夹进行加锁操作
| 编号 | 关键类 | 备注 |
|---|---|---|
| 1 | DirectorySecurity | 目录安全类 |
| 2 | FileSystemAccessRule | 系统文件访问规则类 |
| 3 | Environment.UserName | 当前系统的登录用户 |
-
加锁前,文件夹打开浏览到的文件界面
-
加锁后,显示的效果
-
代码如下
private void btnAddLock_Click(object sender, EventArgs e)
{
try
{
string folderPath = txtTargetFolder.Text;
if (string.IsNullOrWhiteSpace(folderPath))
{
MessageBox.Show("请输入或者选择目标文件夹!");
return;
}
DirectorySecurity directorySecurity = Directory.GetAccessControl(folderPath);
FileSystemAccessRule fileSystemAccessRule = new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny);
directorySecurity.AddAccessRule(fileSystemAccessRule);
Directory.SetAccessControl(folderPath, directorySecurity);
MessageBox.Show($"加锁成功!");
}
catch (Exception ex)
{
MessageBox.Show($"加锁失败:{ex.Message}");
}
}
5、解锁按钮
点击解锁按钮,对目标文件夹进行解锁操作
- 代码如下
private void btnUnLock_Click(object sender, EventArgs e)
{
try
{
string folderPath = txtTargetFolder.Text;
if (string.IsNullOrWhiteSpace(folderPath))
{
MessageBox.Show("请输入或者选择目标文件夹!");
return;
}
DirectorySecurity directorySecurity = Directory.GetAccessControl(folderPath);
FileSystemAccessRule fileSystemAccessRule = new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny);
directorySecurity.RemoveAccessRule(fileSystemAccessRule);
Directory.SetAccessControl(folderPath, directorySecurity);
MessageBox.Show($"解锁成功!");
}
catch (Exception ex)
{
MessageBox.Show($"解锁失败:{ex.Message}");
}
}
6、常见设置
1)设置窗体居中显示
确定窗体第一次出现的位置,Form组件属性StartPosition=CenterScreen
到此,加解锁文件夹的小工具就完成了 感兴趣的小伙伴们,加锁了的文件夹,在PE系统下是否能够打开呢!可以尝试下