首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

PowerShell 一鍵清除 IE 快取:RunDll32 InetCpl.cpl 完整參數對照表與自動化腳本

     編輯:更多程式設計知識

Windows 系統內建的 RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 提供無需 GUI 操作即可程式化清除 Internet Explorer 快取、Cookie、歷史記錄、表單資料、密碼等隱私資料的能力。同樣適用於批次檔、排程工作、登入/登出腳本、系統部署映像優化。本文整理完整參數對照表、自動化腳本範例與常見坑點。

核心命令語法

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess <Flags>

Flags 為位元旗標組合值 (十進位),控制清除哪些項目:

完整旗標對照表

項目旗標值二進位說明
暫存網際網路檔案80000 1000Temporary Internet Files (快取)
Cookie20000 0010Cookies
歷史記錄10000 0001History
表單資料160001 0000Form Data (自動完成)
密碼320010 0000Passwords (儲存的登入認證)
全部刪除2551111 1111上述所有項目 (1+2+8+16+32+...)
全部刪除 + 增益集資料43511000 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

PowerShell 封裝函數

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 目錄大小

進階:清除特定網域 Cookie (PowerShell 7+)

# 需安裝 Microsoft.PowerShell.EdgeManagement 模組 (支援 Edge/IE)
# 此為示意,實際 API 較複雜
function Clear-DomainCookie {
    param($Domain)
    $cookies = Get-Cookie -Domain $Domain  # 假設函數
    $cookies | Remove-Cookie
}

最佳實務總結

  1. 日常維護:排程每日清晨執行 ClearMyTracksByProcess 8 (僅快取),平衡磁碟空間與登入便利性。
  2. 安全合規:離職/交接機器執行 4351 核彈級清除。
  3. 自動化部署映像:Sysprep 前在 SetupComplete.cmd 執行 255,確保基準映像乾淨。
  4. 除錯網頁問題:開發者遇到舊快取干擾,手動執行 8 或 3 (快取+Cookie)。
  5. 記錄與稽核:封裝函數輸出清除項目、時間、ExitCode 至事件日誌或集中式日誌系統。

這個源自 Windows 98 時代的 InetCpl.cpl 介面,至今仍是 Windows 系統管理員清理 IE 遺留資料最高效、零依賴的利器。善用旗標組合與自動化部署,能大幅減少人工操作與支援成本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved