【C#】winform实现锁定和解锁文件夹功能

简介: 有个朋友找我,问我有没有一个简单的小工具,能够直接对文件夹进行加密或者加锁,带着这个朋友的需求就简单的实现了加解锁文件夹功能的小工具!大家也可以想一想,在什么场景下需要对文件夹进行加锁操作呢?1)一些比较敏感工作文件2)防止别人复制个人的学习成果文件等等场景
作者:小5聊基础
简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑
编程原则:Write Less Do More

1、开发环境信息

1)操作系统:windows11 专业版

2)开发工具:Microsoft Visual Studio Professional 2017

3)开发框架:.NET Framework 4.6.1

2、界面设计

image.png
1)目标文件夹文本框

输入加解锁目标路径值

2)选择按钮

点击按钮能够选择目标路径,确定后,并且能够赋值到文本框里,此处和文件夹选择组件结合使用


3)加锁按钮

点击按钮,对目标文件夹进行加锁操作

4)解锁按钮

点击按钮,对目标文件夹进行解锁操作

3、浏览文件夹对话框组件

直接双击或者拖入到目标Form窗体即可,这个组件需要配合对应的按钮使用,由按钮或者其他控件的点击事件,间接触发文件夹浏览选择对话框
image.png

  • 具体代码如下
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;
    }
}
  • 选择文件夹效果

image.png

4、加锁按钮

点击加锁按钮,对目标文件夹进行加锁操作

编号 关键类 备注
1 DirectorySecurity 目录安全类
2 FileSystemAccessRule 系统文件访问规则类
3 Environment.UserName 当前系统的登录用户
  • 加锁前,文件夹打开浏览到的文件界面

image.png

  • 加锁后,显示的效果

image.png

  • 代码如下
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系统下是否能够打开呢!可以尝试下
相关文章
|
15天前
|
监控 前端开发 安全
C#一分钟浅谈:文件上传与下载功能实现
【10月更文挑战第2天】在Web应用开发中,文件的上传与下载是常见需求。本文从基础入手,详细讲解如何在C#环境下实现文件上传与下载。首先介绍前端表单设计及后端接收保存方法,使用`<input type="file">`与`IFormFile`接口;接着探讨错误处理与优化策略,如安全性验证和路径管理;最后讲解文件下载的基本步骤,包括确定文件位置、设置响应头及发送文件流。此外,还提供了进阶技巧,如并发处理、大文件分块上传及进度监控,帮助开发者构建更健壮的应用系统。
60 15
|
13天前
|
C# Windows
C#实现指南:将文件夹与exe合并为一个exe
C#实现指南:将文件夹与exe合并为一个exe
65 9
|
1月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
13天前
|
开发框架 Cloud Native .NET
10 个 C# 关键字和功能
10 个 C# 关键字和功能
41 8
|
2天前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
|
9天前
|
安全 C# 数据安全/隐私保护
实现C#编程文件夹加锁保护
【10月更文挑战第16天】本文介绍了两种用 C# 实现文件夹保护的方法:一是通过设置文件系统权限,阻止普通用户访问;二是使用加密技术,对文件夹中的文件进行加密,防止未授权访问。提供了示例代码和使用方法,适用于不同安全需求的场景。
|
14天前
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
38 0
|
14天前
|
物联网 C#
【C#】简单的蓝牙通讯功能实现
【C#】简单的蓝牙通讯功能实现
13 0
|
14天前
|
C#
如何使用c# 实现断点续传功能
如何使用c# 实现断点续传功能
13 0
|
14天前
|
网络协议 C#
C#:简化版的实现断点续传功能
C#:简化版的实现断点续传功能
21 0