Windows 系統內建的 RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 提供無需 GUI 操作即可程式化清除 Internet Explorer 快取、Cookie、歷史記錄、表單資料、密碼等隱私資料的能力。同樣適用於批次檔、排程工作、登入/登出腳本、系統部署映像優化。本文整理完整參數對照表、自動化腳本範例與常見坑點。
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess <Flags>
Flags 為位元旗標組合值 (十進位),控制清除哪些項目:
| 項目 | 旗標值 | 二進位 | 說明 |
|---|---|---|---|
| 暫存網際網路檔案 | 8 | 0000 1000 | Temporary Internet Files (快取) |
| Cookie | 2 | 0000 0010 | Cookies |
| 歷史記錄 | 1 | 0000 0001 | History |
| 表單資料 | 16 | 0001 0000 | Form Data (自動完成) |
| 密碼 | 32 | 0010 0000 | Passwords (儲存的登入認證) |
| 全部刪除 | 255 | 1111 1111 | 上述所有項目 (1+2+8+16+32+...) |
| 全部刪除 + 增益集資料 | 4351 | 1000 1000 0111 | 包含「也刪除增益集儲存的檔案和設定」 |
# 1. 僅清除快取 (最常用,釋放磁碟空間)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
# 2. 清除 Cookie + 歷史記錄 (隱私保護)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 3 # 1+2
# 3. 完整清除 (重置 IE 狀態)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255
# 4. 核彈級清除 (含增益集資料,解決頑固外掛問題)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351
function Clear-IECache {
param(
[ValidateSet('Cache','Cookies','History','FormData','Passwords','All','AllWithAddons')]
[string[]]$Target = 'All',
[switch]$Quiet
)
$flagMap = @{
'Cache' = 8
'Cookies' = 2
'History' = 1
'FormData' = 16
'Passwords' = 32
'All' = 255
'AllWithAddons' = 4351
}
$flags = ($Target | ForEach-Object { $flagMap[$_] }) -join ' '
$combinedFlag = ($Target | ForEach-Object { $flagMap[$_] } | Measure-Object -Sum).Sum
if (-not $Quiet) { Write-Host "清除項目: $Target (旗標: $combinedFlag)" }
$process = Start-Process -FilePath 'RunDll32.exe' `
-ArgumentList "InetCpl.cpl,ClearMyTracksByProcess $combinedFlag" `
-Wait -PassThru -WindowStyle Hidden
if ($process.ExitCode -ne 0) {
Write-Warning "清除可能未完全成功 (ExitCode: $($process.ExitCode))"
}
}
# 使用範例
Clear-IECache -Target Cache, Cookies, History
Clear-IECache -Target AllWithAddons -Quiet
@echo off
REM 清除 IE 所有快取與隱私資料
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255
echo 完成
pause
$action = New-ScheduledTaskAction -Execute 'PowerShell.exe' `
-Argument '-NoProfile -Command "Clear-IECache -Target All -Quiet"'
$trigger = New-ScheduledTaskTrigger -Daily -At 3am
$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -DontStopOnIdleEnd
Register-ScheduledTask -TaskName 'DailyIECacheCleanup' -Action $action -Trigger $trigger -Settings $settings -RunLevel Highest -Force
| 限制 | 說明 | 替代方案 |
|---|---|---|
| 僅影響當前使用者 | 需在目標使用者情境下執行 (登入腳本、排程任務設定該使用者) | 使用 Invoke-Command 遠端執行或群組原則部署 |
| 不支援 Edge/Chrome/Firefox | 僅限 IE / MSHTML 引擎宿主應用 (如舊版 Outlook、內嵌 WebBrowser 控制項) | 瀏覽器各自有清除 API 或命令列參數 (如 chrome --clear-browsing-data) |
| 需 IE 安裝 | Windows 10/11 仍內建 IE 模組,但未來可能移除 | 遷移至 Clear-BrowsingData (Edge) 或瀏覽器專用工具 |
| 執行中 IE 進程會阻礙清除 | 建議先關閉所有 IE 視窗 | 腳本前加 Stop-Process -Name iexplore -Force -ErrorAction SilentlyContinue |
| ExitCode 不一定可靠 | RunDll32 常回傳 0 即使部分失敗 | 事後檢查 $env:LOCALAPPDATA\Microsoft\Windows\INetCache 目錄大小 |
# 需安裝 Microsoft.PowerShell.EdgeManagement 模組 (支援 Edge/IE)
# 此為示意,實際 API 較複雜
function Clear-DomainCookie {
param($Domain)
$cookies = Get-Cookie -Domain $Domain # 假設函數
$cookies | Remove-Cookie
}
ClearMyTracksByProcess 8 (僅快取),平衡磁碟空間與登入便利性。4351 核彈級清除。SetupComplete.cmd 執行 255,確保基準映像乾淨。8 或 3 (快取+Cookie)。這個源自 Windows 98 時代的 InetCpl.cpl 介面,至今仍是 Windows 系統管理員清理 IE 遺留資料最高效、零依賴的利器。善用旗標組合與自動化部署,能大幅減少人工操作與支援成本。