本人剛學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,來清除一些注冊表中的記錄,請參考源代碼。
本文配套源碼