WEB开发网
开发学院软件开发VC 递归法实现一键清空 阅读

递归法实现一键清空

 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,来清除一些注册表中的记录,请参考源代码。

Tags:递归 实现 一键

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接