c#文件锁的实现

大致功能是,启动 文件锁 程序后,将想要上锁的文件或文件夹拖入到加密区,实现对 文件或文件夹 的加密,或者点击浏览文件夹 选择自己想要加密的文件或文件夹。

1>效果:

     



2>对文件或文件夹上锁的原理:

     其实是利用了windows自身的安全类标识符,对一个文件夹添加后缀  .{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}  后,会发现该文件夹被windows识别为安全类标识文件夹,然后便自动变成了一把锁,用鼠标点怎么也点不开,鼠标重命名也不行。

       但是这种方法只能对文件夹上锁,对文件上锁却没有用,所以要做到对文件上锁,先新建一个文件夹,再把文件移动到该文件夹内,然后对该文件夹上锁


3>实现思路:

DirectoryInfo类和FileInfo类

单个文件夹加密:

DirectoryInfo是跟文件夹相关的类,通过DirectoryInfo对象的MoveTo方法进行重命名,即在上锁的时候给想要上锁的文件夹添加后缀.{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}  

单个文件夹解密:

同样利用MoveTo将加密过的文件夹名去掉该后缀

单个文件加密:

利用FileInfo对象的FullName属性得到当前文件的路径,再通过string的SubString方法截掉文件的后缀,得到的路径便是同该文件同一目录下的文件夹路径,然后用DirectoryInfo类的CreateDirectory方法Create出该文件夹,最后通过FileInfo的MoveTo方法将自身移动到该新建的文件夹中,并通过创建的DirectoryInfo对象对其添加后缀

单个文件解密:

由于本质上文件和文件夹的加密结果都是文件夹,所以在对文件加密的过程中要添加一些标识符,用来区别该文件夹到底是文件的加密结果还是文件夹的加密结果,就像上面的gif中对RunSSM.bat文件加密后的文件夹的名字多了个_MYLOCKER的标识符,所以在程序运行的过程中,若是遇到了含_MYLOCKER的标识符,就代表它原先是由文件加密而来。所以对其解锁的过程就是先判断有无标识符,有的话则先给该文件夹解锁,再把里面的文件移动出来,再删掉文件夹


效果二:


这是全局加密的效果


实现思路很简单,就是多遍历一下文件夹,判断是否为空,不为空则对于文件夹内的每个东西,若是文件则采用文件的上锁方法,若是文件夹则采用文件夹的上锁方法,解密的思路亦然


其他效果:

1>文件夹和文件的拖动效果

gif里面的感应区其实是一个panel,设置panel的AllowDrop属性为true,然后设值他相应的拖放事件


双击DragDrop和DragEnter就可以生成相应的事件代码

实现拖动代码如下:



2>界面皮肤效果

这是因为下载了皮肤主题的dll文件 ---IrisSkin4.dll,不用下载,项目里都有

步骤:

1>将IrisSkin4.dll拷贝到winform项目的bin/Debug下

2>新建选项卡,命名为皮肤,右键---添加项,添加dll



然后这个dll就可以作为一个皮肤控件了


然后初始化的时候,设置下皮肤路径就行




项目码云地址:https://gitee.com/Gitee666/file_lock.git

猜你喜欢

转载自blog.csdn.net/qq_37960007/article/details/80549840