筆者初學 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) { ... }
C:\Windows\Recent\、C:\Windows\History\。採用自訂 CRegistry 類操作註冊表,清除相關歷史記錄鍵值。具體實現請參考配套原始碼。
本文配套完整原始碼供下載。