首页 > 编程语言 >第35篇 C#文件夹加锁小工具

第35篇 C#文件夹加锁小工具

时间:2024-10-17 14:43:15浏览次数:7  
标签:status 加锁 Parent C# 35 文件夹 folderBrowserDialog1 SelectedPath

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

用C#语言实现一个文件夹锁的程序,程序的基本原理是:用C#语言重命名文件夹,通过重命名使之成为windows安全文件的类标识符。具体的方法是为文件夹添加拓展名“.{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}”

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

以下是使用流程

1.启动程序

image

image

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

image

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

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

3.解锁

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

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

image

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程序的代码地址,有需要可以看看

代码库地址:https://gitee.com/chenshibao/folder-protection-tool.git

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

标签:status,加锁,Parent,C#,35,文件夹,folderBrowserDialog1,SelectedPath
From: https://www.cnblogs.com/chenshibao/p/18472132

相关文章

  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 在线打开 word文件动态插入图片并设置
    PageOffice国产版:支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、龙芯(LoogArch)芯片架构。查看本示例演示效果本示例关键代码的编写位置Vue+Springboot注意本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如......
  • DeepLabCut: 基于深度学习的无标记动物姿态估计工具
    DeepLabCutDeepLabCut是一款强大的开源工具,用于对包括人类在内的所有动物进行无标记姿态估计。它采用深度学习技术,可以对用户自定义的特征进行精确跟踪和分析。以下是DeepLabCut的主要特点和功能:主要特点无标记跟踪:无需在动物身上贴附任何标记物,即可实现高精度的姿态估计。......
  • centos创建用户并仅授权访问某目录
    #!/bin/bash#检查是否以root用户运行if["$(id-u)"-ne0];thenecho"请使用root用户或sudo权限运行此脚本。"exit1fi#检查输入参数if["$#"-ne3];thenecho"用法:$0<用户名><密码><授权目录>"exit1fi......
  • CUTLASS: NVIDIA的高性能CUDA线性代数库
    CUTLASS简介CUTLASS(CUDATemplatesforLinearAlgebraSubroutines)是NVIDIA开发的一个开源CUDAC++模板库,用于实现高性能的矩阵乘法(GEMM)和相关计算。它采用了类似cuBLAS和cuDNN的分层分解和数据移动策略,将这些"移动部件"分解为可重用的模块化软件组件,通过C++模板类进行......
  • 白鲸开源 WhaleStudio 入选「OSCAR 开源尖峰商业化」案例
    2024年10月16日,由中国通信标准化协会主办、中国信息通信研究院承办的“2024OSCAR开源产业大会”在北京成功举办。工业和信息化部信息技术发展司软件产业处处长李琰、中国信息通信研究院党委副书记王晓丽、中国通信标准化协会副理事长兼秘书长代晓慧出席并发表致辞。人民日报出版......
  • C++ 易踩坑总结以及小技巧
    1.for循环中在栈上创建的对象可能具有相同的地址,进行指针操作时需注意;所以循环中最好使用new来创建指针并操作地址;for(intx:arr){ ClassNameobj();\\itisliketohavethesameaddressineveryloop ClassNameobj2=newClassName(); std::cout<<&obj<<std::en......
  • 虚拟PLC技术之我见
    可以想象这样的一个场景:手头有一台安装了Windows的电脑,但是需要用苹果的软件。此时,再购买一台Mac未免太贵了!怎么办呢?这时虚拟化就会告诉你,在安装了Windows的电脑上安装一个虚拟机软件,在软件中运行MAC的操作系统,这样,苹果的软件就能够在同一台电脑上顺利使用了!PLC为什么要虚拟化有......
  • etcd 操作备份和恢复
    2.3.5:etcd增删改查数据:2.3.6:etcd数据watch机制:基于不断监看数据,发⽣变化就主动触发通知客户端,Etcdv3的watch机制⽀持watch某个固定的key,也⽀持watch⼀个范围。相⽐Etcdv2,Etcdv3的⼀些主要变化:接⼝通过grpc提供rpc接⼝,放弃了v2的http接⼝,优势是⻓连接效率提......
  • 【C#】单元测试入门(XUnit 测试框架)
     本文示例环境VisualStudio2019XUnit 2.9.2单元测试框架xunit.runner.visualstudio2.2.0测试运行工具为什么要写单元测试 一个项目中,可能比较庞大。所以,使用测试,可以减少耦合,提升代码的质量。也可以让后续开发人员,快速了解代码。至于不写测试代码的原因有很多:比如......
  • 下载安装使用 Adobe Media Encoder (ME)专业视频编码软件
    目录一、软件简介1.1软件概述1.2功能特色1.3新功能亮点二、下载三、安装ME3.1解压安装包3.2运行安装程序3.3完成安装3.4自定义工作空间3.5导入视频与设置输出3.6开始编码一、软件简介1.1软件概述AdobeMediaEncoder(简称ME)是Adobe公司推出的一款......