C# 实现文件夹加锁保护

34 阅读2分钟

前言

要想保护自己的文件夹内的信息不被别人看到,可以给文件加个锁【注意:加锁用的密码一定要记住】

正文

用C#语言实现一个文件夹锁的程序,程序的基本原理是:用C#语言重命名文件夹,通过重命名使之成为windows安全文件的类标识符。

具体的方法是为文件夹添加拓展名"{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}".(.{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}是windows安全文件的类标识符),这时文件夹的图标就会变成一把锁,这样文件夹就被加锁了。

以下是使用流程

1、启动程序

2、加密

选择要加锁的文件夹,并输出加锁密码【注意,密码一定要记住】

出现如图效果,文件夹加锁成功

加锁成功后,会出现这个图标,不解锁的情况下是无法访问这个文件夹里的内容的

3、解锁

再次选择文件夹,输入解锁密码【加锁时用的密码】

解锁完成后文件夹里的内容就可以正常访问了

4、核心代码

private void button1_Click(object sender, EventArgs e)
{
	status = arr[0];         
	if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
	{                
		DirectoryInfo d = new DirectoryInfo(folderBrowserDialog1.SelectedPath);
		string selectedpath = d.Parent.FullName + d.Name;
		if (folderBrowserDialog1.SelectedPath.LastIndexOf(".{") == -1) //通过文件夹名称,判断是加密还是解密
		{
			if (checkBox1.Checked)
				setpassword(folderBrowserDialog1.SelectedPath);
			if (!d.Root.Equals(d.Parent.FullName))
			{
				d.MoveTo(d.Parent.FullName + "\\" + d.Name + status); //文件夹重命名
			}
			else
			{
				d.MoveTo(d.Parent.FullName + d.Name + status);
			}
			textBox1.Text = folderBrowserDialog1.SelectedPath;
			pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\Images\\lock.jpg");
			this.notifyMessage.Text = "加锁成功";
			this.notifyMessage.ForeColor = Color.Red;
		}
		else
		{
			//解密文件夹
			status = getstatus(status);
			bool s=checkpassword();
			if (s)
			{
				File.Delete(folderBrowserDialog1.SelectedPath + "\\p.xml");
				d.MoveTo(folderBrowserDialog1.SelectedPath.Substring(0, folderBrowserDialog1.SelectedPath.LastIndexOf(".")));
				textBox1.Text = folderBrowserDialog1.SelectedPath.Substring(0, folderBrowserDialog1.SelectedPath.LastIndexOf("."));
				pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\Images\\unlock.jpg");
				this.notifyMessage.Text = "解锁成功";
				this.notifyMessage.ForeColor = Color.Green;
			}
		}
	}
}

5、源码地址

demo程序的代码地址,有需要可以看看

gitee.com/chenshibao/…

总结

本文件夹加密程序是通过重命名文件夹的方式实现的,加密强度较弱,但可以满足一定的加密需要!

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

优秀是一种习惯,欢迎大家留言学习!

作者:似梦亦非梦

出处:cnblogs.com/chenshibao/p/18472132

声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!