当前位置:编程学习 > 网站相关 >>

编写简单的文件夹加密工具

表面看来文件夹加密应该是比较受欢迎的,但我认识的人中愿意使用的并不多,他们更喜欢建立一个深层目录或者起一个迷惑性的名字,当然这并不是说加密软件不好,而是说使用它太麻烦了,若密码丢了又是一堆麻烦事,而且不安全(多数的文件夹加密软件使用的方法是很取巧的),所以我们就自己来编写一个简单实用的文件夹加密码工具。
 
实现思路
本文的实现思路是把要加密的文件夹伪装成系统类型文件,比如“我的电脑”、“控制面板”等,伪装后就无法打开真正目录了,而会转向其它指定的目录,连文件夹的图标都会变化,不知底细的人是无论如何也看不出来的。
 
技术实现
那么,我们如何把一个文件夹伪装成系统文件呢?其实“我的电脑”、“控制面板”等也是普通的文件夹,不同的地方就在于系统为它们注册了一个单一的ID值;同样,如果我们把自己的文件夹改成这用格式,比如“我的电脑”,那么打开的时候系统就会转向真正的“我的电脑”,而且会自动替换图标。设置成系统文件的方法为:为文件夹加上约定的扩展名,比如伪装成“我的电脑”就加上“.{20D04FE0-3AEA-1069-A2D8-08002B30309D}”。在本文的最后,我还为大家提供了一些其他系统文件的ID,用以伪装成其他的系统文件。
 
编程实现
新建一个对话框程序,并加入如图1所示的相应控件,分别为选择文件夹、加密和解密码按钮,然后为选择文件夹加入如下代码。

图1
 
void CFolderEncryDlg::OnSelect()
{
BROWSEINFO bi;  
char buffer[MAX_PATH];  
ZeroMemory(buffer,MAX_PATH);  
bi.hwndOwner=GetSafeHwnd();  
bi.pidlRoot=NULL;  
bi.pszDisplayName=buffer;  
bi.lpszTitle="选择一个文件夹";  
bi.ulFlags=BIF_EDITBOX;  
bi.lpfn=NULL;  
bi.lParam=0;  
bi.iImage=0;
LPITEMIDLIST pList=NULL;  
if((pList=SHBrowseForFolder(&bi))!=NULL)  
{
char path[MAX_PATH];  
ZeroMemory(path,MAX_PATH);  
SHGetPathFromIDList(pList,path);
GetDlgItem(IDC_EDDIR)->SetWindowText(path);
}
}

之后为加密按钮加入如下代码。
 
void CFolderEncryDlg::OnEncry()
{
CString strpath,despath;
GetDlgItem(IDC_EDDIR)->GetWindowText(strpath);
despath.Format("%s.{20D04FE0-3AEA-1069-A2D8-08002B30309D}",strpath);
::rename(strpath,despath);
}

再在解密按钮里加入如下代码。
 
void CFolderEncryDlg::OnUnEncry()
{
CString strpath,despath;
GetDlgItem(IDC_EDDIR)->GetWindowText(strpath);
int pos=strpath.Find(".");
despath=strpath.Left(pos);
if(despath.IsEmpty())return;
::rename(strpath,despath);
}

这样,我们就编写完成了一个简单的文件夹加密工具了。原理很简单,没有涉及到什么复杂的技术,如果你需要这类的软件,就可以试试我提供的方法了,简单易用。最后,我再为大家提供一些其它的系统ID值,管理工具为{D20EA4E1-3957-11d2-A40B-0C5020524153},公文包为{85BBD92O-42A0-1O69-A2E4-08002B30309D},控制面板为{21EC2O2O-3AEA-1O69-A2DD-08002b30309d},为字体{D20EA4E1-3957-11d2-A40B-0C5020524152},历史记录为{FF393560-C2A7-11CF-BFF4-444553540000},收件箱为{00020D75-0000-0000-C000-000000000046},Microsoft网络为{00028B00-0000-0000-C000-000000000046},我的文档为{450D8FBA-AD25-11D0-98A8-0800361B1103},网上邻居为{1f4de370-d627-11d1-ba4f-00a0c91eedba},回收站为{645FF040-5081-101B-9F08-00AA002F954E},Web文件夹为{BDEADF00-C265-11d0-BCED-00A0C90AB50F}等

补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,