用C#語言實現一個文件夾鎖的程序,網上類似的“xxx文件夾xxx”軟件很多,但是基本上都是C/C++語言實現的,且都沒有提供源碼(這個可以理解,畢竟是加密程序,不應該泄露源碼)。
程序的基本原理是:用C#語言重命名文件夾,通過重命名使之成為windows安全文件的類標識符。具體的方法是為文件夾添加拓展名“.{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}”
(.{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}是windows安全文件的類標識符),這時文件夾的圖標就會變成一把鎖,這樣文件夾就被加鎖了。
程序的主界面非常簡潔,截圖如下:

程序中加密解密文件夾的核心代碼如下:
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; } } } }
程序的運行效果如下:
以加密D盤下面的test文件夾為例,結果如下:
首先通過folderBrowserDialog選擇相應的文件夾

輸入密碼,加鎖

效果如下:

此時雙擊文件夾已經無法打開。
選擇加密后的test文件夾,輸入加密時輸入的密碼,可解鎖。

test文件夾已經解密

結束語:本文件夾加密程序是通過重命名文件夾的方式實現的,加密強度較弱,牛人繞道,寫出來給大家多個談資~
希望對各位博友有幫助。請點擊下面的“綠色通道”---“關注DebugLZQ”,與DebugLZQ一起交流進步~
Update 2014-02-06: Folder protection for Windows using C# and concepts on Windows Shell menu for folders
Thanks, King!
