Windows中使用C#为文件夹和文件编写密码锁的示例分享

2019-12-30 11:44:40刘景俊
易采站长站为您分析Windows中使用C#为文件夹和文件编写密码锁的示例分享,特别是文件锁可以针对各种类型的文件输入密码进行加密解密,非常实用,需要的朋友可以参考下  

C#文件夹加锁小工具
用C#语言实现一个文件夹锁的程序,网上类似的“xxx文件夹xxx”软件很多,但是基本上都是C/C++语言实现的,且都没有提供源码(这个可以理解,毕竟是加密程序,不应该泄露源码)。

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

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

程序的主界面非常简洁,截图如下:

Windows中使用C#为文件夹和文件编写密码锁的示例分享

程序中加密解密文件夹的核心代码如下:


    private void btnBrowseFolder_Click(object sender, EventArgs e)
    {
      
      status = lockType;//
      

      if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
      {
        DirectoryInfo d = new DirectoryInfo(folderBrowserDialog1.SelectedPath);
        string selectedpath = d.Parent.FullName + d.Name;
        if (folderBrowserDialog1.SelectedPath.LastIndexOf(".{") == -1)//通过文件夹名称,判断加密
        {          
          SetPwd(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);
          txtFolderPath.Text = folderBrowserDialog1.SelectedPath;
          
        }
        else//解密文件夹
        {
          status = GetStatus(status);
          bool s = CheckPwd();
          if (s)
          {
            File.Delete(folderBrowserDialog1.SelectedPath + "key.xml");
            string path = folderBrowserDialog1.SelectedPath.Substring(0, folderBrowserDialog1.SelectedPath.LastIndexOf("."));
            d.MoveTo(path);
            txtFolderPath.Text = path;
            
          }
        }
      }
    }

程序的运行效果如下: