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

VC++ 一鍵清除瀏覽痕跡:文件、歷史記錄、Cache、Cookie 全方位清理

     編輯:VC 教學

痛點與解決思路

手動清除 IE 臨時檔案、歷史記錄、Cookie、最近使用文件清單既繁瑣又易遺漏。本文提供自動化清理方案,涵蓋:

  1. 指定目錄檔案刪除(Recent、Temp、Temporary Internet Files、Cookies)
  2. IE 歷史記錄清除(COM 介面 IUrlHistoryStg2)
  3. 下拉網址列表清除(註冊表)
  4. Cookie 進程級清理(InternetSetOption)

核心功能模組

1. 通用目錄檔案刪除函式

void DelMyPointFile(LPCTSTR pszPattern, LPCTSTR pszDir) {
    WIN32_FIND_DATA fd;
    TCHAR szCur[MAX_PATH], szSearch[MAX_PATH];
    GetCurrentDirectory(MAX_PATH, szCur);
    SetCurrentDirectory(pszDir);

    _stprintf_s(szSearch, _T("%s"), pszPattern);
    HANDLE hFind = FindFirstFile(szSearch, &fd);
    if (hFind != INVALID_HANDLE_VALUE) {
        do {
            if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
                DeleteFile(fd.cFileName);
            }
        } while (FindNextFile(hFind, &fd));
        FindClose(hFind);
    }
    SetCurrentDirectory(szCur);
}

2. 清理系統預設路徑


TCHAR szWin[MAX_PATH], szTarget[MAX_PATH];
GetWindowsDirectory(szWin, MAX_PATH);

// Recent
PathCombine(szTarget, szWin, _T("Recent"));
DelMyPointFile(_T("*.*"), szTarget);

// Temp
PathCombine(szTarget, szWin, _T("Temp"));
DelMyPointFile(_T("*.*"), szTarget);

// IE Temp
PathCombine(szTarget, szWin, _T("Temporary Internet Files"));
DelMyPointFile(_T("*.*"), szTarget);

// Cookies
PathCombine(szTarget, szWin, _T("Cookies"));
DelMyPointFile(_T("*.*"), szTarget);

3. IE 歷史記錄清除(COM 方式)


HRESULT ClearIEHistory() {
    IUrlHistoryStg2* pHist = NULL;
    CoInitialize(NULL);
    HRESULT hr = CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC_SERVER,
                                  IID_IUrlHistoryStg2, (void**)&pHist);
    if (SUCCEEDED(hr)) {
        hr = pHist->ClearHistory();
        pHist->Release();
    }
    CoUninitialize();
    return hr;
}

4. 下拉網址列表清除(註冊表)


void DelTypedURLs() {
    RegDeleteKey(HKEY_CURRENT_USER,
        _T("Software\\Microsoft\\Internet Explorer\\TypedURLs"));
}

5. Cookie 進程級清理


// 通知 IE 結束當前瀏覽會話,釋放記憶體中 Cookie
InternetSetOption(0, INTERNET_OPTION_END_BROWSER_SESSION, 0, 0);
// 再刪除 Cookies 目錄檔案
DelMyPointFile(_T("*.*"), szCookiesPath);

已知限制與改進方向

  • DelMyPointFile 僅刪除檔案,不處理子目錄 → 需加入遞迴刪除邏輯
  • Win9x/Win2K/XP 路徑可能不同,建議用 SHGetFolderPath 取得標準路徑
  • Vista+ 受 UAC 限制,需管理員權限清理系統目錄
  • 現代瀏覽器 Edge/Chrome 需分別處理其資料目錄

編譯環境

  • VC++ 6.0 / Windows 98 驗證通過
  • 需連結 wininet.lib、urlmon.lib
  • 包含 <urlhist.h> 使用 IUrlHistoryStg2
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved