Windows 批次卸載工具,Bulk Crap Uninstaller 連殘留一起清

Bulk Crap Uninstaller 是免費開源的 Windows 批次解除安裝工具,Apache-2.0 授權、內建繁體中文。它堅持先跑每個程式原廠的解除安裝器,再以信心分級清理殘留;2025 年中起安裝包沒有程式碼簽章,下載前建議用 winget 或自行核對 SHA-256 雜湊。

用 AI 摘要這篇文章:

在 Windows 上移除軟體,真正麻煩的從來不是按下「解除安裝」那一下,而是每家軟體的安裝器各有一套自己的解除安裝邏輯:有的走微軟安裝服務、有的用 Inno Setup 或 NSIS 打包、有的根本沒寫進系統清單。於是市面上出現兩種極端做法,一種是打開設定頁一個一個點,點完還要自己去資料夾和登錄檔裡撈殘骸;另一種是讓「清理工具」直接刪檔,快是快,但服務沒註銷、右鍵選單還掛著的慘案也不少。

Bulk Crap Uninstaller(社群常簡稱 BCU)選了一條不太一樣的路:把每個程式自己的解除安裝器當成唯一正規管道,批次驅動它們跑完,再用分級機制收尾。這套工具 2016 年開源,採 Apache-2.0 授權,私人與商業環境都能免費使用,到 2026 年 10 月累積約 2.2 萬顆星,最新版本 v6.3 於 2026 年 9 月 7 日發布,介面內建繁體中文。接下來拆開它的設計邏輯,以及使用前你該知道的三個邊界。

先讓原廠解除安裝程式跑完,是寫在原始碼裡的底線

官網對功能的說明裡有一句關鍵的設計宣告:它一律先嘗試執行應用程式「原本的解除安裝器」,避免那種盲目刪檔的工具常見的問題,例如右鍵選單項目或背景服務沒有跟著清理乾淨。這句話聽起來像公關稿,但翻開原始碼會發現它是真的被逐一套裝技術實作出來的。

以很常見的 Inno Setup 打包程式為例,原始碼裡的 InnoSetupQuietUninstallStringGenerator.cs 產生的安靜卸載指令,就是把原廠解除安裝執行檔加上 Inno Setup 官方定義的三個參數:

"解除安裝執行檔" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART

這三個參數都是 Inno Setup 官方文件裡的白牌參數,不是逆向猜出來的繞法。原始碼註解還留了一個很有價值的警告:如果少了 /NORESTART,解除安裝器在需要重開機時可能不詢問就直接重新啟動電腦。看得出來作者踩過這個雷。

走微軟安裝服務的程式(MSI)也一樣,UninstallManager.cs 裡組出來的指令是 MsiExec /qb /X{產品代碼} REBOOT=ReallySuppress /norestart,全部是 Windows Installer 的正規參數。換句話說,BCU 所謂的「安靜卸載」第一種形態,是替你查表:每一種安裝技術,對應它官方的靜默參數。

遇到沒有靜默參數的安裝器,它派機器人替你點

問題來了:不是每種安裝器都有靜默參數。NSIS 打包的程式就沒有通用的官方靜態卸載參數,這也是很多號稱能批次卸載的工具卡關的地方。BCU 的解法相當有創意:自己寫了一支 UninstallerAutomatizer 小程式,用 UI 自動化函式庫 FlaUI 驅動 Windows 的介面自動化層,替你把精靈畫面上的按鈕點完。

從 AutomatedUninstallManager.cs 的原始碼可以看到它認按鈕的兩套方法:一套是寫死的 NSIS 控制項編號,例如 1203 號的「立即重新啟動」單選鈕被歸類為壞選項、1204 號的「稍後重新啟動」才是好選項,1 是前進、2 是取消、6 是「是」、7 是「否」;另一套是把所有語系的按鈕文字整理成比對清單,就算安裝器畫面是德文或日文也認得出來。卡住的解除安裝器還能代為強制結束。

所以「安靜」其實有兩種:官方靜默參數的安靜,以及機器人代點的安靜。後者的成功率取決於精靈畫面有沒有長得太奇怪,官方手冊也明白寫著:無法安靜卸載的項目,會跳出對話框讓你把這些「吵鬧」的解除安裝程式從批次名單中剔除。換句話說,它承諾的是把需要手動點的項目誠實挑出來,而非假裝全部全自動。

批次執行時還有兩個看得出實戰經驗的細節。排程上它會把「吵鬧」的解除安裝程式排在批次前段,因為這些需要你盯著點,先處理完它們,剩下的全自動項目就能放著讓它跑,你可以早點離開電腦。執行前它也會先檢查某個解除安裝器會不會和正在跑的其他解除安裝程序相撞,撞到了就先略過或等它結束,避免兩個解除安裝器同時搶同一個安裝服務。

順帶一提,它掃出來的「已安裝清單」比控制台廣得多,涵蓋十類來源:一般註冊程式、隱藏或受保護的註冊程式、解除安裝器損壞或缺失的程式、免安裝的便攜程式、Chocolatey 套件、Oculus、Steam 遊戲、Windows 功能、Microsoft Store 應用程式與 Windows 更新。幫別人清電腦時,這份清單深度差很多。

Bulk Crap Uninstaller 主視窗官方截圖,列出偵測到的已安裝程式清單與篩選器Pin
Bulk Crap Uninstaller 主視窗(專案官方截圖),左側為已安裝程式清單與篩選欄

殘留不是看到就刪,先給一個信心分數

原廠解除安裝器跑完,才是 BCU 的第二個戰場:殘留清理。這一段的設計哲學同樣保守。原始碼 UninstallTools/Junk/Finders/ 目錄下有 15 個以上的掃描器分工,檔案系統側掃安裝位置、Prefetch、Windows 錯誤報告與解除安裝器本身的位置;登錄檔側掃 Software 機碼、Uninstall 機碼、防火牆規則、事件記錄檔、COM 註冊、相容性標記與啟動項;另外還有專抓 Program Files 裡孤兒資料夾的掃描器。

關鍵在於每一筆找到的殘留都會被配上信心分數。原始碼 ConfidenceLevel.cs 定義了四級:Bad 等於 5 分、Questionable 等於 7 分、Good 等於 9 分、VeryGood 等於 12 分。官方手冊寫得直白:預設只會預選 Good 以上的項目,低信心項目的移除「是危險的,只建議有經驗的使用者」。

刪除之前還有兩道保險:移除登錄檔項目前,程式會詢問是否先建立備份;檔案與資料夾則先丟進資源回收筒,只有在你停用回收筒或容量不足時才會直接永久刪除。手冊同時提醒,視窗裡的匯出功能只會存下項目路徑與信心評等,「這不是備份工具」。整體來說,它把「清多乾淨」和「承擔多少風險」變成使用者可以自己拉的一條線,全刪或保守都由你決定。

這套掃描也還在調整。v6.1 的更新說明提到,它加強了對 MSI 安裝程式「所有已安裝檔案」的偵測,安裝位置認得越多,清單裡重複出現的孤兒項目就越少,代價是掃描啟動時間可能變長。開發者把這種取捨直接寫進版本說明,這對願意讀文件的使用者是加分訊號。

Bulk Crap Uninstaller 殘留清理視窗官方截圖,以 Chrome 為例列出檔案與登錄檔殘留和信心評等Pin
殘留清理視窗(專案官方截圖),以 Chrome 為例顯示殘留項目與信心評等,可逐項勾選再刪除

安裝包沒有程式碼簽章,下載這一步要自己把關

檢查 v6.3 安裝包(9.4MB)本身的檔案結構,會看到一個必須先講清楚的事實:這個執行檔沒有 Authenticode 程式碼簽章,安全目錄大小為 0,沒有任何憑證字串。它的 SHA-256 雜湊值與 winget 套件庫 manifest 裡登錄的完全一致,檔案本身沒有被動過手腳,但「沒簽章」這件事是真的。

為什麼會走到這一步,來龍去脈值得知道。2025 年 4 月,專案討論區出現一則濫用回報:有不法人士利用 .NET 程式的特性,拿「有簽章的 BCU 執行檔」搭配替換過的 DLL 來載入惡意程式,藉此閃避防毒偵測。作者當時在討論串回覆,程式碼簽章憑證一個月內就要到期,他希望先解決濫用問題再談續約。其後的版本就沒有再簽章,到 2026 年 10 月仍然有開放中的 issue 建議改用 SignPath Foundation 這類免費的開源簽章服務,但尚未落地。

沒有簽章的直接代價,由下載的人承擔:2025 年 7 月起有人回報 Microsoft Defender 把安裝包誤判為 Trojan:Script/Wacatac.H!ml,這個 issue 至今仍開著;中文使用圈也有人回報 5.9 便攜版被防毒攔下。也就是說,你安裝時很可能會看到警告。

幾個下載前的實際問題,直接回答:

看到 SmartScreen 或防毒警告,還能裝嗎? 先別急著按「仍要執行」。確認兩件事再說:下載來源是不是官方的四個下載點(官網、dAppCDN、SourceForge、FossHub)或 GitHub Releases;檔案雜湊是否與官方一致。來源對、雜湊對,就能確定你拿到的是官方發布的那個檔案,警告針對的是「無簽章」這個特徵,與檔案是否被竄改無關。想在檔案總管右鍵直接算雜湊,可以裝 OpenHashTab。

有沒有更省事的驗證方式? 有,交給 winget。專案在每次發布時自動提交 winget 套件庫,manifest 帶著 SHA-256 雜湊,一行指令 winget install Klocman.BulkCrapUninstaller,來源與完整性檢查都由套件庫處理。

第三方下載站抓得到,能用嗎? 不建議。這類工具的搜尋結果向來是重災區,無簽章又高下載量的安裝包正是被人重新打包投毒的完美候選。官方來源不缺,沒必要冒這個險。

2021 年就開始找接班人,2026 年補上兩位新維護者

打開專案的 README,第一行不是功能介紹,而是一則從 2021 年 5 月掛到今天的公告:尋找維護者。作者在討論串裡說得很坦白,他已經不常使用 BCU,時間也不夠,因此公開徵求願意接手的人,並承諾在找到能完全信任的接棒者之前,仍由他親自製作並把關每個 release。

五年過去,這個承諾目前為止是兌現的:2026 年 3 月到 9 月之間推出了 v6.0 到 v6.3 四個版本,2026 年 6 月儲存庫還搬進了專屬的 BCUninstaller 組織。從貢獻統計看,主力作者累積上千次提交,第二名貢獻者約一百次,其後只剩十次上下的零星貢獻,長期以來這是個一人扛著走的專案。徵人啟事在 2026 年 6 月出現轉機:v6.2 的版本說明白紙黑字寫著新增兩位維護者,隔一個版本的 v6.3 功能清單裡,命令列的 JSON 輸出與演練模式就出自新維護者之手。

所以把它讀成「已經棄坑」並不準確;更貼近現況的描述是:一位看守了五年的原作者,加上 2026 年年中才加入的新血,功能仍在演進(例如有人正在提交原生深色模式的草案、便攜版新增了 Windows ARM64 支援),但你要接受「未來某一天可能沒有下一版」的可能性,把它用在當下需要的工作上,而不是當成十年大計的基礎建設。

版本與三種安裝包,選錯會白忙一場

版本系統下限需要的執行環境
v6(2026 年 3 月起)Windows 10.NET 8 桌面執行環境,安裝版會自動補裝
v5(最終版 5.9,2025 年 7 月)Windows 7 SP1(含指定更新).NET 6 桌面執行環境
v1 到 v4Windows XP.NET Framework 4.5

官方也附了但書:v6 在 Windows 7 上「可能可以跑」,但不在正式支援範圍內,舊機器穩妥的做法還是停留在 v5。另一個結構性變化是 v6 起不再提供 32 位元 x86 版本,理由是支援的系統已經沒有 x86 版本,真的需要可以自行編譯。

同一個版本還有三種包裝,大小差很多,原理很簡單:安裝版只有 9.4MB,因為它偵測到系統缺 .NET 執行環境時才自動下載;「net」便攜版約 12.4MB,條件是你自己先裝好執行環境;完整便攜版約 100MB,因為它把整個 .NET 執行環境都包進去了,適合放隨身碟到處用。看到網路文章寫它「體積 77MB」,那是好幾個版本前的舊資訊,現在對不上任何一種包裝。

介面語言方面,繁體中文是內建的,原始碼裡有 40 個以上的 zh-Hant 資源檔,從主視窗到設定頁都有人翻好。另外它還有命令列版本 BCU-console,v6.3 新增了 JSON 輸出與 dry-run 演練模式,清單先輸出、確認無誤再動手,對要管整批機器的 IT 人員來說是實用的自動化介面。

免費商用、內建繁中,但帶著三種匿名遙測

授權是寬鬆的 Apache-2.0,官方明言私人與商業環境都可免費使用、無附加義務。隱私政策則列了三種收集項:匿名使用統計、匿名錯誤報告,以及使用者自願給的應用程式評分;首次啟動會產生一個隨機 ID 用於統計與評分,可以自由更改,官方宣稱這些資料不與任何第三方共享。對大多數人來說這在可接受範圍,但「完全沒有遙測」是不成立的,介意的人要知道這條線。

還有個順手但有意思的功能:v6.2 起應用清單新增了憑證與完整性欄位,能顯示每個已安裝程式有沒有簽章、檔案是否被改過。一個自己沒簽章的工具,卻把「替你稽查別人有沒有簽章」做進核心清單,某種意義上這正是它一貫的立場:簽章與來源驗證是每個人都該自己看的基本功。

大掃除、接手舊機器與 IT 批次部署,它最派得上用場

適合的情境很明確:電腦用久了要一次清掉幾十個不再用的程式;接手新機器或二手機要批次移除預裝軟體;IT 人員要透過命令列對多台機器做可演練的批次移除。反過來說,如果你只是要移除某個單一程式,Windows 內建的設定頁就夠了;如果你完全不想處理防毒警告與雜湊驗證這類麻煩,這工具現在的無簽章現況會讓你很煩,挑有簽章的商業替代品可能更省心。

第一步建議直接走 winget 安裝,來源與雜湊一次解決;習慣手動下載的話,官方四個下載點任選一個,下載後核對 SHA-256 再執行。裝好之後先用它掃一份完整清單看看你的機器上有多少東西,再決定要批次移除哪些,這比直接開始刪東西更能體會它的價值。清完軟體之後若想繼續批次調校系統設定,也可以搭配 Privacy Sexy 這類腳本化工具接力。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 1828

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...