用C#語言實現(xiàn)一個文件夾鎖的程序,網(wǎng)上類似的“xxx文件夾xxx”軟件很多,但是基本上都是C/C++語言實現(xiàn)的,且都沒有提供源碼(這個可以理解,畢竟是加密程序,不應(yīng)該泄露源碼)。
程序的基本原理是:用C#語言重命名文件夾,通過重命名使之成為windows安全文件的類標(biāo)識符。具體的方法是為文件夾添加拓展名“.{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}”
(.{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}是windows安全文件的類標(biāo)識符),這時文件夾的圖標(biāo)就會變成一把鎖,這樣文件夾就被加鎖了。
程序的主界面非常簡潔,截圖如下:
程序中加密解密文件夾的核心代碼如下:
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文件夾為例,結(jié)果如下:
首先通過folderBrowserDialog選擇相應(yīng)的文件夾
輸入密碼,加鎖
效果如下:
此時雙擊文件夾已經(jīng)無法打開。
選擇加密后的test文件夾,輸入加密時輸入的密碼,可解鎖。
test文件夾已經(jīng)解密
結(jié)束語:本文件夾加密程序是通過重命名文件夾的方式實現(xiàn)的,加密強度較弱,牛人繞道,寫出來給大家多個談資~