首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

遞歸演算法實作一鍵清理隱私工具

     編輯:關於VC++

筆者初學 VC++,開發了一款「一鍵清空」小工具,旨在保護個人隱私。支援清除項目包括:最近使用的文檔、IE 瀏覽歷史、網址列輸入記錄、RealPlayer/RealOne 播放列表。相容 Windows 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();
}

只需傳入目標資料夾路徑即可完成深度清理。

作業系統版本判斷

因 9x 與 NT 系列系統儲存「最近文檔」「歷史記錄」的路徑不同,需先判斷 OS 版本:

OSVERSIONINFO os;
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&os);

// Windows 2000/XP/2003 (NT 核心)
if (os.dwPlatformId == VER_PLATFORM_WIN32_NT) { ... }

// Windows 9x
if (os.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { ... }

動態構建清理路徑

  • 9x 系統:路徑固定,如 C:\Windows\Recent\、C:\Windows\History\。
  • NT 系統:支援多用戶,路徑包含用戶名或「電腦名.用戶名」,構建較複雜,詳見原始碼。

註冊表記錄清理

採用自訂 CRegistry 類操作註冊表,清除相關歷史記錄鍵值。具體實現請參考配套原始碼。

本文配套完整原始碼供下載。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved