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

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C#窗体化软件中,你可以通过加载外部的Python脚本文件来调用预留函数。下面是一种实现方式: 1. 在C#窗体应用程序中,首先需要添加对Python的支持。你可以使用Python.NET库来实现这一点。在Visual Studio中,可以通过NuGet包管理器来安装Python.NET。 2. 创建一个预留函数的接口类,在该类中定义你希望在Python脚本中调用的函数。例如,假设你希望在Python脚本中调用名为"ReservedFunction"的函数,你可以创建一个接口类如下: ```csharp public interface IReservedFunctions { void ReservedFunction(); } ``` 3. 加载并执行Python脚本。你可以使用PythonEngine类来加载和执行Python脚本。在加载Python脚本之前,需要设置Python运行时环境的路径。以下是一个简单的示例: ```csharp using Python.Runtime; public void LoadPythonScript() { using (Py.GIL()) // 获取全局解释器 { dynamic module = Py.Import("your_python_script"); // 加载Python脚本 // 创建预留函数接口的实例 IReservedFunctions reservedFunctions = module as IReservedFunctions; // 调用预留函数 reservedFunctions.ReservedFunction(); } } ``` 以上示例代码假设你的Python脚本文件名为"your_python_script.py",并且该脚本文件中包含了实现了IReservedFunctions接口的ReservedFunction函数。 通过以上步骤,你就可以在C#窗体化软件中加载外部的Python脚本,并调用预留函数了。请确保在执行Python脚本之前,已经正确地安装了Python和Python.NET库,并且Python脚本中的函数与接口类的定义相匹配。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值