递归法实现一键清空
2006-07-20 11:39:10 来源:WEB开发网核心提示:本文示例源代码或素材下载 本人刚学VC不久,近来做了一个一键清空的小软件,递归法实现一键清空,主要是为了保护个人隐私,该软件清除的内容包括:我最近的文档,4、清除注册表记录我用了一个类CRegistry,来清除一些注册表中的记录,IE访问记录,上网历史记录
本文示例源代码或素材下载
本人刚学VC不久,近来做了一个一键清空的小软件,主要是为了保护个人隐私,该软件清除的内容包括:我最近的文档,IE访问记录,上网历史记录,地址栏URL记录,清除REALPLAY播放列表,清除REALONE播放列表。该软件支持9X/2000/XP/2003,在同学的电脑上实验过,效果不错。 运行画面如图一:
图一 一键清空运行画面
1、核心代码
该软件的核心代码是ClearDir函数:
void CClearAllDlg::ClearDir(CString str)
{
CFileFind ff;
CString szDir=str;
if (szDir.Right(1)!="\\") szDir+="\\";
szDir+="*.*";
BOOL bfile=ff.FindFile(szDir);
while (bfile)
{
bfile=ff.FindNextFile();
if (ff.IsDirectory() && !ff.IsDots()) ClearDir(ff.GetFilePath());
else if (!ff.IsDots() && !ff.IsDirectory()) DeleteFile(ff.GetFilePath());
}
ff.Close();
}
该函数用递归法清除了一个目录下的所有文件和子目录。只需传递给它需要清除的文件夹的路径即可。
2、判断操作系统
先获取操作系统的信息,然后判断版本号,代码如下:
OSVERSIONINFO os;
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&os);
//如果是WIN 2000以上
if (os.dwPlatformId==VER_PLATFORM_WIN32_NT)
{
…………
}
//如果是WIN 9X
if (os.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
…………
}
3、构造清除的路径
由于9X和NT系统存放"最近文档","历史记录"的文件夹不相同,所以必须分别考虑。在9X下,最近文档和历史记录的目录分别为"盘符:\\WINDOWS\\Recent\\""盘符:\\WINDOWS\\History\\",所以只需清除这两个固定目录即可。在NT下,由于支持多用户,这些路径中间需要加上"用户名"或者"计算机名.用户名"的字符串。所以构造起来稍微麻烦一点,具体请参考源代码。
4、清除注册表记录
我用了一个类CRegistry,来清除一些注册表中的记录,请参考源代码。
赞助商链接