手動清除 IE 臨時檔案、歷史記錄、Cookie、最近使用文件清單既繁瑣又易遺漏。本文提供自動化清理方案,涵蓋:
IUrlHistoryStg2)InternetSetOption)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);
}
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);
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;
}
void DelTypedURLs() {
RegDeleteKey(HKEY_CURRENT_USER,
_T("Software\\Microsoft\\Internet Explorer\\TypedURLs"));
}
// 通知 IE 結束當前瀏覽會話,釋放記憶體中 Cookie
InternetSetOption(0, INTERNET_OPTION_END_BROWSER_SESSION, 0, 0);
// 再刪除 Cookies 目錄檔案
DelMyPointFile(_T("*.*"), szCookiesPath);
DelMyPointFile 僅刪除檔案,不處理子目錄 → 需加入遞迴刪除邏輯SHGetFolderPath 取得標準路徑wininet.lib、urlmon.lib<urlhist.h> 使用 IUrlHistoryStg2